DRY, KISS, YAGNI

Trois règles de sobriété du code : ne pas répéter une même connaissance (DRY), préférer la solution la plus simple (KISS), ne pas coder ce dont on n'a pas encore besoin (YAGNI), et leurs limites.

  • 25 cartes
  • 5 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
  5. Comprendre

Quelques cartes du deck

  • DRY : de quoi s'agit-il ?

    Voir la réponse

    Règle selon laquelle chaque connaissance du système (une règle métier, un taux, un format) n'a qu'une seule représentation faisant autorité.

    Le sigle vient de « Don't Repeat Yourself ». Il vise la connaissance dupliquée, pas toute ressemblance entre deux morceaux de code.

  • Quelle correction applique DRY à ce code ?

    ```python
    def prix_ttc_dvd(prix):
    return prix * 1.2

    def prix_ttc_jeu(prix):
    return prix * 1.2

    def facture(total):
    return total + total * 0.2
    `

    • Définir une constante TVA = 0.2 et l'utiliser dans les trois fonctions
    • Fusionner prix_ttc_dvd et prix_ttc_jeu en une fonction, sans toucher à facture
    • Ajouter un commentaire # TVA 20 % au-dessus de chaque fonction
    • Réécrire chaque fonction sur une seule ligne
    Voir la réponse

    Définir une constante TVA = 0.2 et l'utiliser dans les trois fonctions

    Le taux de TVA est une connaissance écrite trois fois, sous deux formes (1.2 et 0.2). Fusionner deux fonctions laisse la répétition dans facture ; un commentaire en ajoute une de plus à tenir à jour.

  • Si le format des numéros de facture est recodé dans quatre modules, le changer oblige à les retrouver tous : DRY demande que chaque … n'ait qu'une seule … dans le système.

    Voir la réponse

    Si le format des numéros de facture est recodé dans quatre modules, le changer oblige à les retrouver tous : DRY demande que chaque connaissance n'ait qu'une seule représentation dans le système.

    Une fonction ou une constante nommée devient l'unique source de ce format : on le change à un seul endroit, sans risque d'oublier un module.

  • KISS : de quoi s'agit-il ?

    Voir la réponse

    Règle selon laquelle, entre deux solutions qui répondent au besoin, on garde la plus simple à lire, à tester et à maintenir.

    Le sigle vient de « Keep It Simple, Stupid ». Simple ne veut pas dire court : une expression régulière de 80 caractères est brève et illisible.

  • Frais de port et pénalité de retard valaient tous deux 5 %. Ils ont été fusionnés en une fonction taux(). La pénalité passe à 8 % par décision juridique, et les frais de port changent aussi. Quelle est la cause, et la solution ?

    • Duplication accidentelle : deux connaissances différentes ; les séparer à nouveau
    • Violation de DRY : il fallait aussi fusionner le taux de TVA
    • Abstraction prématurée : ajouter un paramètre type à taux() pour distinguer les cas
    • Violation de KISS : il fallait écrire le 5 directement partout
    Voir la réponse

    Duplication accidentelle : deux connaissances différentes ; les séparer à nouveau

    Les deux valeurs étaient égales par hasard, et ne changent pas pour la même raison (le transport, la loi). Un paramètre type garde le lien artificiel en le cachant. DRY vise les connaissances identiques, pas les valeurs identiques.