Pourquoi pas des commentaires

contenu

10 septembre 2024

'Maintenant disponible! C'est une version légère alors que j'en apprends davantage sur le formatage d'un livre au bon aspect. Vous pouvez voir certaines des différences entre v2 et v3 ici.'

Le code est écrit dans un langage machine structuré, les commentaires sont écrits dans un langage humain expressif. Le bit "langage humain" rend les commentaires plus expressifs et communicatifs que le code. Le code a une quantité limitée de quelque chose comme le langage humain contenu dans les identifiants. "Commenter le pourquoi, pas le quoi" signifie pousser autant d'informations que possible dans les identifiants. Tous les "quoi" ne peuvent pas être intégrés de cette manière, mais beaucoup le peuvent.

Ces dernières années, je vois de plus en plus de personnes soutenir que les pourquoi n'ont pas leur place dans les commentaires non plus, qu'ils peuvent être intégrés dans LongFunctionNames ou les noms des cas de test. Virtuellement tous les codebases "auto-documentés" ajoutent de la documentation par l'ajout d'identifiants.1

Alors, qu'est-ce qui se trouve dans le domaine de l'expression humaine qui ne peut pas être représenté avec plus de code ?

Résumer
L'article aborde l'importance des commentaires dans le code, en soulignant que ceux-ci peuvent exprimer des informations que le code lui-même ne peut pas. L'auteur explique que, bien que le code puisse être auto-documenté par des noms de fonctions et de variables, il existe des informations négatives, comme les raisons pour lesquelles une certaine approche n'est pas adoptée, qui ne peuvent pas être intégrées dans le code. Un exemple est donné à partir de son livre 'Logic for Programmers', où il a choisi une méthode inefficace pour remplacer des symboles mathématiques, mais a ajouté un commentaire pour expliquer ce choix. Ce commentaire sert à rappeler qu'il est conscient des compromis faits, ce qui est crucial pour la maintenance future du code. L'auteur conclut que les informations négatives ne peuvent pas être auto-documentées par le code, car elles concernent ce que le code ne fait pas, et soulève des questions sur la possibilité de documenter des abstractions de communication humaine de manière autonome.