Je pense que le sujet est bien choisi. C'est "cool" d'écrire une ligne de Perl qui fait dix mille choses en même temps, mais ça craint quand on doit la revisiter.
Sur une note différente, intelligente ou non, le code doit être documenté. Il existe un décalage inhérent d'impédance entre les langages de programmation acceptés par l'industrie et les concepts de haut niveau auxquels nous sommes habitués en tant qu'êtres humains dans notre pensée. Le code auto-documenté n’est tout simplement pas réalisable - jusqu’à ce qu’il devienne un langage naturel. Même le code Prolog doit être documenté car, quel que soit son niveau, il reste assez formel.
Le code impératif à grains fins sert à mettre en œuvre des plans à grains grossiers - qui doivent être documentés. Je ne veux pas avoir à lire toutes les 50 lignes de la méthode lorsqu'un commentaire rapide de feuille de route de 3 lignes suffira.
Édition ultérieure: un exemple plus éloquent est celui qui transcende les ordinateurs. Un livre peut être très bien écrit, mais nous voulons souvent le traiter à différents niveaux d'abstraction. Souvent, un résumé du livre fera l'affaire, et c'est ce que les commentaires peuvent offrir au code. Bien sûr, un code bien abstrait peut aller très loin dans l'auto-documentation, mais il ne peut pas vous donner tous les niveaux d'abstraction.
Et les commentaires peuvent également agir comme des notes de bas de page dans un livre, lorsque nous devons expliquer le processus de raisonnement derrière une revendication dans le texte principal sans le faire dérailler.
Dans ce contexte, j'estime que ma déclaration antérieure faisant référence au langage naturel transcendant le besoin de commentaires est incorrecte. Même le langage naturel, comme dans un livre, peut se prêter à la documentation, expliquer de manière fragmentée l'abstraction contenue dans le texte ou fournir des détours sans faire dérailler le texte principal. Avec la note, un code bien abstrait peut déjà avoir fait beaucoup pour être auto-documenté.
Enfin, les commentaires peuvent aider le codeur à conserver un niveau d'abstraction élevé. Souvent, je réalise que deux commentaires consécutifs que j'ai inclus dans une liste d'étapes ne parlent pas du même niveau d'abstraction, ce qui justifie immédiatement un regard critique sur ce que je fais avec ce code.
Certains problèmes transcendent le codage et l’affectent, tout comme d’autres activités. Les commentaires peuvent fournir cette aide pour clarifier la raison derrière et les facettes de notre code, et je les trouve un compagnon agréable qui parle un langage plus doux au bénéfice de la personne pour un changement.