Idée

Ranger un objet imprévu par une exception n'apprend rien sur l'architecture

Idée principale

Quand un document n'entre dans aucune case — un guide de traduction né au milieu d'un travail de traduction, qui n'est ni une source, ni une note, ni un chapitre, ni une traduction — deux réponses se présentent, et elles coûtent le même effort.

La première nomme le cas : les guides de traduction vont dans tel dossier. Elle règle le problème en quelques secondes, elle est exacte, et elle laisse l'architecture exactement dans l'état où elle l'a trouvée. Le prochain objet imprévu redemandera la même décision, qui sera prise de la même façon, et la liste des exceptions grandira sans qu'aucune ne se justifie par les autres.

La seconde cherche le critère qui a rendu la décision possible : ce document produit-il un résultat, conserve-t-il une connaissance, décrit-il l'état actuel, ou gouverne-t-il les actions futures ? Elle prend plus de temps, elle oblige souvent à reformuler une définition qu'on croyait acquise, et elle rend décidables des cas qu'on n'a pas encore rencontrés.

Pourquoi c'est important

Une architecture se dégrade rarement par un mauvais découpage initial : elle se dégrade par accumulation d'exceptions correctes. Chacune est défendable isolément, aucune n'a coûté cher, et l'ensemble finit par ne plus pouvoir s'expliquer à quelqu'un qui arrive.

Cela donne un signal observable : lorsqu'une décision de rangement se formule en nommant le type d'objet plutôt qu'en nommant sa fonction, le critère manque et personne ne l'a cherché.

Nuances et limites

L'exception reste parfois la bonne réponse. Un objet qui n'apparaîtra qu'une fois ne mérite pas qu'on révise une définition pour lui, et chercher un critère à tout prix produit des généralisations construites sur un seul cas.

La règle suppose aussi qu'on sache reconnaître un objet imprévu comme tel. Beaucoup passent pour des variantes d'objets connus, et sont rangés sans que personne remarque qu'une case a été forcée.

Questions ouvertes

  • Combien d'occurrences d'un objet faut-il avoir vues avant qu'un critère tiré de lui vaille mieux qu'une exception assumée ?