Il y a une faille tragique avec "l'auto-documentation du code" de la théorie. Oui, la lecture du code vais vous dire exactement ce qu'il fait. Toutefois, le code est incapable de vous dire ce que c'est censé faire.
Je pense qu'il est sûr de dire que tous les bugs sont causés lorsque le code ne fait pas ce qu'il est censé faire :). Donc, si nous ajoutons quelques commentaires clés pour fournir des responsables ayant assez d'informations pour savoir ce qu'est un morceau de code est censé faire, alors nous leur avons donné la possibilité de résoudre tout un tas de bugs.
Cela nous laisse avec la question de savoir comment de nombreux commentaires. Si vous avez un trop grand nombre de commentaires, les choses deviennent fastidieux à entretenir et les commentaires vont inévitablement être à jour avec le code. Si vous mettez trop peu, alors qu'ils ne sont pas particulièrement utiles.
J'ai trouvé régulièrement des commentaires pour être le plus utile dans les endroits suivants:
1) Une brève description dans la partie supérieure d'un .h ou .fichier cpp pour une classe pour expliquer le but de la classe
2) Un bloc de commentaire avant la mise en œuvre d'un non-triviaux de la fonction d'expliquer le but et les détails de sa durée d'entrées, le potentiel de sorties, et de toutes les bizarreries de s'attendre lors de l'appel de la fonction.
Autre que cela, j'ai tendance à commenter tout ce qui peut paraître déroutant ou bizarre pour quelqu'un. Par exemple: "Ce tableau est basé sur 1 au lieu de 0 basée parce que de bla bla".