Nommage — une grammaire commune¶
La décision¶
Le nommage de l'API suit une sémantique déterministe : pour un couple (couche + intention + type) il existe un seul nom correct, et un seul terme par concept — zéro synonyme. La référence exhaustive (verbes par couche, suffixes de type, booléens, lexique des statuts, vocabulaire de domaine, noms de modules) : Conventions de nommage.
Pourquoi¶
- La lecture d'abord. Une grammaire commune et un vocabulaire stable simplifient énormément la lecture du code : si
find*veut toujours dire « peut être absent » etget*« présence attendue », la signature porte le contrat et le lecteur n'a pas à ouvrir l'implémentation. - Les synonymes sont du bruit.
declined/rejected/refusedpour le même concept forcent chaque lecteur à se demander si la nuance est intentionnelle. Un terme canonique par concept élimine la question — et les débats de review qui vont avec. - Les agents écrivent comme nous. Un nommage déterministe rend le bon nom calculable : pour une intention donnée, humains et LLM produisent le même identifiant au lieu d'inventer des variantes.
Les principes structurants¶
- Le verbe porte le contrat :
get/find(présence attendue / nullable),getAndLock(verrou),process(workflow transactionnel),compute/resolve/evaluate(pur)… Un seul verbe gagnant par intention et par couche. - Statuts canoniques :
confirmed,pending,failed,declined,canceled… Champ discriminant =status, valeurs ensnake_case. Un enum externe qui dévie (ex.succeededchez Lemonway) se traduit au bord, ne se migre pas — on ne touche pas à un enum de paiement en production. - Vocabulaire de domaine fermé :
brick,investor,property,project,ProjectOwner… Et les types forts complètent le nommage : un montant est unCents, pas unnumberau nom suffixé.
Le détail des tables, du lexique et des interdits : Conventions de nommage.