Les signes d'un code à reprendre

Les signes décrits par Fowler qui disent qu'un code mérite d'être repris, rangés par familles (code obèse, abus de l'objet, freins au changement, superflu, couplage), et les nombres magiques ; les reconnaître dans un extrait et derrière un symptôme vécu.

  • 36 cartes
  • 4 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation

Quelques cartes du deck

  • Signe de code à reprendre : de quoi s'agit-il ?

    Voir la réponse

    Indice, dans la structure d'un programme, d'un problème de conception plus profond ; le programme fonctionne, mais il sera coûteux à faire évoluer.

    Ce n'est pas un bogue : aucun test n'échoue. C'est un signal qui invite à regarder de plus près, puis à remanier si le problème est réel.

  • Quel signe de code à reprendre ce code présente-t-il ?

    ```java
    class Commande {
    String etiquette(Client c) {
    return c.getPrenom() + " " + c.getNom() + "\n"
    + c.getRue() + "\n" + c.getVille();
    }
    }
    `

    • Jalousie de fonctionnalité
    • Chirurgie au fusil
    • Nombre magique
    • Changement divergent
    Voir la réponse

    Jalousie de fonctionnalité

    La méthode n'utilise aucune donnée de Commande : tout vient de Client. Elle serait mieux placée dans Client, qui détient ces champs.

  • Un nombre écrit en dur dont le sens n'apparaît nulle part est un … ; on le remplace par une … nommée.

    Voir la réponse

    Un nombre écrit en dur dont le sens n'apparaît nulle part est un nombre magique ; on le remplace par une constante nommée.

    Le nom de la constante remplace le commentaire et donne un seul endroit où changer la valeur.

  • Méthode longue : de quoi s'agit-il ?

    Voir la réponse

    Fonction qui enchaîne tant d'étapes qu'on ne peut plus la lire d'un coup d'œil ni la tester par morceaux.

    Un commentaire qui annonce un bloc (« calcul de la remise ») est souvent le nom d'une méthode qui attend d'être extraite.

  • Pour ajouter un moyen de paiement, tu dois modifier neuf classes. Quel est le signe, et que faire ?

    • Changement divergent : extraire une classe par moyen de paiement dans chaque classe touchée
    • Jalousie de fonctionnalité : déplacer les neuf classes dans le même paquet
    • Méthode longue : découper chaque méthode en morceaux de moins de dix lignes
    • Chirurgie au fusil : regrouper dans une seule classe ce qui varie avec le moyen de paiement
    Voir la réponse

    Chirurgie au fusil : regrouper dans une seule classe ce qui varie avec le moyen de paiement

    Un seul changement de règle éparpillé sur plusieurs classes est la définition de la chirurgie au fusil. Le remède déplace les morceaux (déplacer une méthode, un champ) vers une classe unique.