Dans le cartouche, là je n'ai aucun problème à ce que tu expliques de manière plus approfondie les choses utiles (voir une note proche de see also qui te ramène à une explication plus complète), mais pas dans le code
Et pourtant, le principe pour y arriver est simple, même s'il en fait blêmir plus d'un :Bien sûr mon code ne doit pas respecter correctement toutes tes règles donc je ne pourrais pas te le proposer en contre-exemple.
Tout concept qui apparait dans l'analyse des besoins / fonctionnelle ou technique mérite d'apparaitre dans le code, et, pour ce faire, en te basant sur un principe comme un nom (group sujet) = un type, un verbe (groupe verbal) = une fonction.
Je me fous pas mal de savoir que le type est un alias sur un entier, une énumération, une structure C style, une classe ou une union! Il faut juste savoir que si tu as un nom qui représente un concept, ce nom mérite d'apparaitre dans le code
Je me fous pas mal de savoir si la fonction est une fonction libre ou une fonction membre, si elle est publique, privée, statique ou virtuelle, il faut juste qu'elle existe
En te posant la question "j'ai un type (ou une fonction) qui représente tel concept, mais quelle est sa responsabilité " et en veillant à ce que cette responsabilité soit unique, tu verras tout de suite si ton concept n'est pas "un peu trop général" et s'il n'est par conséquent pas utile de le préciser quelque peu, quitte à rajouter plusieurs concepts qui, eux aussi, seront représentés dans le code sous la forme d'un type ou d'une fonction plus spécifique, mais moins compliquée, et donc plus facilement maintenable et tout ce que tu veux .
Disons qu'il y a surtout des symptômes qui ne trompent pas quand tu ne les respecte pas:Après, il y a la théorie et la pratique. Une personne peut être sûre d'avoir respecté tous tes principes correctement mais un relecteur pourrait ne pas être de cet avis donc rajouter des commentaires à certaine ligne peut parfois aider (d'ailleurs qui peut affirmer n'écrire que du code respectant tous les bonnes pratiques de programmation?).
Tout cela doit te mettre quelque peu la puce à l'oreille, non
- Des fonctions "kilométriques" (qui dépassent allègrement la cinquantaine de lignes, même en admettant une certaine souplesse)
- Des tests et des boucles imbriquées à n'en plus finir (mettons de manière plus ou moins arbitraire, plus de deux ou trois niveaux d'imbrication)
- Des copier/coller de code "à quelques variantes près" (quand il y a des variantes ), que ce soit dans une même fonction, dans deux fonctions membre d'une même classe ou carrément dans deux fonctions totalement distinctes.
- Des tests de transtypage récurrents
- je pourrais surement encore en trouver, mais bon ...
Et, dans les fonctions pour lesquels il serait content d'avoir des commentaires, si tu y réfléchis, il y a combien des indices dont je viens de dresser la liste (non exhaustive) qui te feraient penser que tu n'a peut etre pas assez factorisé / délégué ton codeJ'ai par exemple écrit du code pour une entreprise qui sera sûrement repris par un stagiaire, ce dernier sera assez content d'avoir quelques commentaires.
Dés le moment où il risque de ne pas être cohérent vis à vis du code, il n'a aucune raison d'être, purement et simplement.Bien sûr tout est histoire de proportion, il ne faut pas en abuser non plus.
Et je vais une fois de plus répéter ma thèse pour ne laisser aucun doute :
- Les cartouches, c'est quasiment obligatoire, dés le moment où l'on passe le stade d'un accesseur.
- Les commentaires à visée pédagogique ou didactiques sont les bienvenus, quand on est dans tel contexte
- Les commentaires qui font référence à un rapport de bogue sont également les bienvenus pour attirer l'attention du lecteur.
- Mais les commentaires qui, de manière générale, paraphrasent le code n'ont strictement rien à faire dans le code vu que le code doit se suffire à lui-même
Partager