Two Fer

Two Fer

Fácil

Introdução

Em alguns sotaques do inglês, quando dizes "two for" à pressa, soa a "two fer". Two-for-one é uma forma de dizer que, se comprares um, também recebes outro de graça. Por isso, a expressão "two-fer" sugere muitas vezes uma oferta two-for-one.

Imagina uma padaria com uma oferta de época festiva em que podes comprar dois biscoitos pelo preço de um ("two-fer one!"). Aceitas a oferta e (com muita generosidade) decides dar o biscoito extra a outra pessoa na fila.

Instruções

A tua tarefa é decidir o que vais dizer quando deres a bolacha extra.

Se souberes o nome da pessoa (por exemplo, se a pessoa se chamar Do-yun), vais dizer:

One for Do-yun, one for me.

Se não souberes o nome da pessoa, dizes you em vez do nome.

One for you, one for me.

Aqui estão alguns exemplos:

Nome Diálogo
Alice One for Alice, one for me.
Bohdan One for Bohdan, one for me.
One for you, one for me.
Zaphod One for Zaphod, one for me.

Implementação

Antes de começares, certifica-te de que percebes como escrever código que passe nos casos de teste. Para mais contexto, dá uma vista de olhos a este tutorial.

A maioria dos exercícios de Java inclui vários casos de teste. Estes casos estão estruturados para apoiar um processo útil conhecido como desenvolvimento orientado por testes (TDD). O TDD envolve repetir um ciclo estruturado que ajuda os programadores a construir funcionalidades complexas peça a peça, em vez de as construírem todas de uma só vez. Esse ciclo pode ser descrito da seguinte forma:

  1. Acrescenta um teste que descreva uma parte da funcionalidade pretendida que o teu código ainda não tem.
  2. Corre os testes para verificar que este teste recém-acrescentado falha.
  3. Atualiza o teu código existente até que:
    • Todos os testes antigos continuem a passar;
    • O novo teste também passe.
  4. Limpa o teu código, certificando-te de que todos os testes continuam a passar. Normalmente, isto implica renomear variáveis, remover blocos de lógica duplicados, remover registos que ficaram para trás, etc.
  5. Volta ao passo 1 até toda a funcionalidade pretendida estar construída!

Os ficheiros de testes deste percurso contêm todos os testes que a tua solução tem de passar para ser considerada válida. À primeira vista, isso pode parecer incompatível com o ciclo descrito acima, em que os testes são escritos um a um. No entanto, a ferramenta que usamos para escrever os nossos testes, o JUnit, disponibiliza uma anotação @Disabled que pode ser usada para ignorar temporariamente um teste já escrito. Com esta anotação, garantimos que os ficheiros de testes que te entregamos cumprem as seguintes regras:

  • O primeiro teste de qualquer ficheiro de testes não é ignorado por predefinição.
  • Todos os testes de qualquer ficheiro de testes, exceto o primeiro, são ignorados por predefinição.

Isto permite-te simular o ciclo de TDD seguindo estes passos ligeiramente modificados:

  1. Corre os testes para verificar que no máximo um teste falha neste momento.
  2. Atualiza o teu código existente até todos os testes não ignorados passarem.
  3. Limpa o teu código, certificando-te de que todos os testes não ignorados continuam a passar.
  4. Remove a anotação @Disabled mais acima no ficheiro de testes.
  5. Volta ao passo 1 até não haver testes ignorados e todos os testes passarem!

Fonte

Explora a fonte deste exercício.

Editar via GitHub A ligação abre numa nova janela ou separador
Java Exercism

Estás pronto para começar Two Fer?

Inscreve-te no Exercism para aprenderes e dominares Java com 26 conceitos158 exercícios, e mentoria humana real, tudo grátis.