Antipatrons.
Des solutions courantes à des problèmes récurrents qui semblent utiles, mais créent plus de difficultés qu’elles n’en résolvent.
L’action à distance est un antipatron où du code situé dans une partie du programme modifie en silence le comportement d’une partie éloignée et sans lien.
Une ancre de bateau est du code ou du matériel conservé dans un système alors qu'il ne sert plus, ce qui égare les mainteneurs et ralentit la compilation.
La programmation culte du cargo consiste à inclure rituellement du code, des patrons ou des pratiques copiés sans comprendre à quoi ils servent ni s'ils sont utiles.
Une dépendance circulaire est un antipatron où plusieurs modules dépendent les uns des autres, si bien qu’aucun ne peut être compilé, testé ou réutilisé seul.
Le couplage fort est un antipatron où des modules dépendent tant des détails internes les uns des autres que modifier l’un oblige à modifier les autres.
Le masquage d’erreurs est un antipatron où le code intercepte une erreur ou une exception et continue sans la journaliser, la traiter ni la signaler.
Un God object est un antipatron : une seule classe qui sait ou fait trop de choses et concentre l’essentiel des données et du comportement du programme.
La surqualité consiste à ajouter des fonctionnalités ou des finitions au-delà des exigences convenues, ce qui ajoute coûts et risques sans demande du client.
Le marteau d'or est l'habitude d'appliquer un même outil, langage ou modèle familier à tous les problèmes, même à ceux auxquels il convient mal.
Le codage en dur intègre des chemins, des identifiants ou des taux dans le code source : les modifier impose d’éditer et de recompiler le programme.
L'effet de plateforme interne consiste à rendre un système si configurable qu'il devient une pâle copie de sa propre plateforme, comme une base de données dans une base.
L’interface surchargée est un antipatron où une seule interface accumule tant d’opérations que chaque client dépend de méthodes qu’il n’utilise jamais.
La coulée de lave est un antipatron où du code obscur et inachevé se fige en production, car personne ne le comprend assez pour oser le supprimer.
Un nombre magique est un littéral sans nom dont le lecteur doit deviner le sens ; une constante nommée rend le code plus clair et plus sûr à modifier.
Un poltergeist est une classe éphémère et sans état qui n’existe que pour appeler les méthodes d’une autre classe, ajoutant une indirection sans comportement.
Le couplage séquentiel est un antipatron où une classe ne fonctionne que si ses méthodes sont appelées dans un ordre précis que rien ne signale.
Le code spaghetti a un flot de contrôle emmêlé et non structuré — sauts, conditions imbriquées, drapeaux — qui le rend difficile à suivre et à maintenir.