## Construir metodicamente

Agora queremos ensinar ao buggle como construir uma casa de cachorro. A abordagem simplória consiste em escrever diretamente o código necessário como segue. Isto funciona por que o buggle deste exercício deixa um caminho vermelho à medida em que anda.

    [!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.

### Objetivo do exercício

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.