## Construire avec méthode

Nous souhaitons maintenant apprendre à la buggle à se faire une niche. La première approche, la plus simple au premier abord, est d'écrire directement le code permettant de le faire, comme ci-dessous (cela marche car la buggle de cet exercice laisse une traînée rouge dans son sillage quand elle se déplace).

    [!c]avancePas()[/!][!python|java|scala]avance()[/!][!java|c];[/!]
    [!c]avancePas()[/!][!python|java|scala]avance()[/!][!java|c];[/!]
    left()[!java|c];[/!]
    [!c]avancePas()[/!][!python|java|scala]avance()[/!][!java|c];[/!]
    [!c]avancePas()[/!][!python|java|scala]avance()[/!][!java|c];[/!]
    left()[!java|c];[/!]
    [!c]avancePas()[/!][!python|java|scala]avance()[/!][!java|c];[/!]
    [!c]avancePas()[/!][!python|java|scala]avance()[/!][!java|c];[/!]
    left()[!java|c];[/!]
    [!c]avancePas()[/!][!python|java|scala]avance()[/!][!java|c];[/!]
    [!c]avancePas()[/!][!python|java|scala]avance()[/!][!java|c];[/!]
    left()[!java|c];[/!]

Les problèmes commencent quand nous voulons faire faire deux cabanes à la buggle : Il faut réécrire le code deux fois, ce qui n'est pas très pratique. Quand le code devient un peu long comme dans ce cas, on voit mieux pourquoi il faut toujours éviter de dupliquer du code. En effet, si vous vous rendez compte que vous vous êtes trompé dans votre code, et que vous l'avez recopier à plusieurs endroits, il va falloir le corriger plusieurs fois. Et gare si vous oubliez de corriger un exemplaire.

Ce principe de programmation a même un nom en anglais : DRY/SPOT (qui signifie «point sec»). C'est l'acronyme de «Don't Repeat Yourself» (ne vous répétez pas) et «Single Point Of Truth» (point unique de vérité). Chaque information doit se trouver à un seul endroit de votre programme pour éviter que les différentes copies ne se désynchronisent quand vous modifiez votre programme.

Nous allons donc appliquer ce beau principe et factoriser le code, c'est-à-dire écrire le code une seule fois, par exemple dans une méthode. Vous devriez même aller plus loin en factorisant le code de la méthode avec une boucle `for` comme vu précédemment. Si vous vous y prenez bien (ce que vous devriez faire), vous n'écrirez qu'un seul appel à la méthode `gauche()` dans votre programme.

### Objectif de cet exercice

L'objectif de cet exercice est d'écrire une méthode nommée `dogHouse()` et ayant un comportement identique au code ci-dessus. La buggle invoquera plusieurs fois votre œuvre afin de dessiner des cabanes un peu partout.