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.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- 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.2et l'utiliser dans les trois fonctions - Fusionner
prix_ttc_dvdetprix_ttc_jeuen 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.2et l'utiliser dans les trois fonctionsLe 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.- Définir une constante
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
typegarde le lien artificiel en le cachant. DRY vise les connaissances identiques, pas les valeurs identiques.