[!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!] [!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!] left()[!java|c];[/!] [!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!] [!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!] left()[!java|c];[/!] [!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!] [!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!] left()[!java|c];[/!] [!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!] [!c]stepForward()[/!][!python|java|scala]forward()[/!][!java|c];[/!] left()[!java|c];[/!]
Vai ficar mais difícil se tivermos que desenhar duas casas de cachorro: teremos que reescrever o mesmo código duas vezes, o que não é muito prático. Quando o código se torna um pouco longo como este, torna-se fácil ver por que insistimos já tem um tempinho namais pura maldade que duplicação de código representa. Na verdade, imagine um erro que se infiltrou no código que copiou para vários lugares, vai ter que corrigir várias vezes. E ai de se esquercer de corrigir num destes lugares.
Existe até um nome para esta boa prática de programação: DRY/SPOT, que em inglês significa "Don't Repeat Yourself / Single Point Of Truth" (não se repita/ponto único de confiança). A última parte significa que cada informação deve ser escrita em apenas um local do seu programa para evitar que diferentes locais fiquem desincronizados quando modificar o código.
Portanto, vamos aplicar este bom princípio de programação e fatorizar o
nosso código, p.ex. escrevê-lo apenas uma vez, por exemplo num
método. Pode ir até mais longe a fatorizar o corpo do método com um loop
for
, como visto anteriormente. Se o faz corretamente (o que se
espera), dá para usar o método left()
apenas uma vez.
O objetivo deste exercício é escrever um método chamado
casaDeCachorro
que faz a mesma coisa que o código acima, mas
com um loop for para mantê-lo curto. O buggle vai chamar a sua criação para
construir várias casas de cachorro neste mundo.