J'ai souvent vu de tels commentaires utilisés:
function foo() {
...
} // foo
while (...) {
...
} // while
if (...) {
...
} // if
et parfois même jusqu'à
if (condition) {
...
} // if (condition)
Je n'ai jamais compris cette pratique et ne l'ai donc jamais appliquée. Si votre code est si long que vous devez savoir quelle est cette fin, }
alors vous devriez peut-être envisager de le diviser en fonctions distinctes. De plus, la plupart des outils de développement sont capables de passer au support correspondant. Et enfin le dernier est, pour moi, une violation claire du principe DRY; si vous modifiez la condition, vous devez vous rappeler de modifier également le commentaire (sinon cela pourrait devenir compliqué pour le responsable, ou même pour vous).
Alors pourquoi les gens l'utilisent-ils? Faut-il l'utiliser, ou est-ce une mauvaise pratique?
source-code
comments
gablin
la source
la source
if(condition): ... else: ... endif;
if ... then ... end if;
while ... loop ... end loop;
procedure Foo is ... end Foo;
. Je trouve que cela aide à la lisibilité (et il est vérifié par le compilateur, ce qui n'est pas le cas).Réponses:
Je dirais que si votre code est si long que vous ne pouvez pas facilement suivre vos accolades, votre code doit être refactorisé, pour la plupart des langues.
Cependant, dans les langages de modèles (comme PHP), cela pourrait être valide, car vous pourriez avoir un grand bloc de code HTML qui sépare le début et la fin de la condition ou de la structure de la boucle.
la source
while():
endwhile;
etforeach():
endforeach;
etc. etc.C'est une odeur de code et généralement une gueule de bois d'un style de code à l'ancienne. Avant le refactoring des IDE décents était plus difficile et pas aussi courant qu'aujourd'hui, les méthodes étaient donc plus longues et ces commentaires étaient là pour aider à mieux les naviguer.
la source
Il s'agit d'une horrible pratique rendue obsolète par de nombreux facteurs.
Je remarque que beaucoup de programmeurs Java ont cet état d'esprit, et cela rend le code Java très sale et détourne l'attention du code et vers les commentaires.
Je recommande fortement de ne pas l'utiliser.
la source
Le code est lu 10 fois plus qu'il n'est écrit.
Si cela facilite la lecture, faites-le.
Je suggérerais également à quiconque fait cela de chercher d'autres moyens de faciliter la lecture. Les techniques de refactoring, les crochets sur différentes lignes, etc. que d'autres personnes ont mentionnées sont toutes bonnes. Il est également bon de diviser les choses en différentes fonctions, méthodes ou classes afin que le code soit auto-commenté. Il existe également des moyens d'éliminer la plupart des "si" et de placer les boucles "pour" dans des endroits évidents, éliminant ainsi la nécessité de tout cela.
Mais parfois, les gens apprennent. Si c'est quelque chose qu'ils font qui rend vraiment le code plus lisible, encouragez-le, puis encouragez également d'autres pratiques. Les personnes qui apprennent méritent et bénéficieront d'encouragements, quelle que soit la façon dont elles commencent. Dire "c'est mauvais" n'est pas aussi utile que dire "cette autre chose est meilleure".
la source
J'ai une grande base de code (C ++) pleine de ce genre de chose:
Pour quelque chose d'aussi petit, je dirais que cela va au-delà de "l'odeur de code" en "puanteur de code". Surtout dans un IDE où je peux faire correspondre l'accolade de fermeture avec une frappe pour trouver l'accolade d'ouverture. Étant donné une méthode plus longue, je prendrai toujours l'accolade correspondant au commentaire du terminal. De tels commentaires me distraient et j'ai tendance à les considérer comme du bruit.
la source
En C ++, il y a deux suspensions où cela est toujours utile et le conseil de "diviser votre code" ne tient pas nécessairement:
Pour les espaces de noms. Un espace de noms peut englober un fichier entier, et cette dernière parenthèse peut parfois décourager les gens, donc l'ajout d'un commentaire pour indiquer que la parenthèse est la fermeture d'un espace de noms est utile. Pour le style de codage particulier de mon entreprise, cela est important car nous n'indentons pas les espaces de noms car il a été décidé qu'une telle indentation ne ferait que gaspiller de l'espace dans un fichier.
Pour les paires #ifdef / #endif. Parfois, il y a beaucoup de code pour la compilation conditionnelle, cela peut devenir désagréable avec l'imbrication, et l'éditeur que nous utilisons souvent de manière "lourde" élimine l'indentation, les commentaires sont donc utiles lors d'un bref aperçu.
la source
Pour moi, le code doit être déroutant pour ajouter un commentaire comme celui que vous avez spécifié.
Si elle indique simplement // IF Statement. Ensuite, vous devez vous demander pourquoi il est là en premier lieu.
la source
//endif
L'alternative à voir ce que votre accolade ferme est d'avoir l'ouverture sur la même colonne que la fermeture. Je trouve cela beaucoup plus clair et plus lisible.
Le commentaire est utile lorsqu'il serait normalement difficile à retracer car l'ouverture s'est produite il y a longtemps. Cela ne devrait normalement se produire que pour un espace de noms (en particulier celui anonyme en C ++, utilisé pour les détails d'implémentation dans l'unité de compilation). Dans la plupart des autres cas, ce que vous fermez devrait être évident.
la source
Il s'agit en grande partie d'un vestige de l'ancien temps de travail dans des fenêtres de terminal de 80 x 24 caractères, surtout si vous utilisiez un éditeur de fenêtres comme EVE. Même maintenant, je fais la plupart de mon travail dans une session de terminal en utilisant vim, et je peux diviser la session en trois ou quatre sous-fenêtres, donc je ne peux vraiment voir que quelques lignes à la fois.
Cela dit, je n'ai jamais vraiment apprécié la convention, même si cela aurait sauvé mon bacon à plus d'une occasion. Je le vois juste comme du bruit. Si vos boucles ou conditions conditionnelles deviennent si importantes, oui, vous voudrez peut-être envisager une refactorisation.
la source
vous donnez essentiellement toutes les raisons valables de ne pas l'utiliser. Chaque programmeur décent devrait les appliquer. Alors pourquoi les gens l'utilisent-ils? Parce qu'ils font mal et ne savent pas mieux.
la source