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.
- Notions
- Questions
- Ranger et relier
- 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 deClient. Elle serait mieux placée dansClient, 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.