Au cours de la programmation, vous obtiendrez des commentaires expliquant le code et des commentaires supprimant du code:
// A concise description
const a = Boolean(obj);
//b = false;
Existe-t-il une bonne méthode pour analyser rapidement laquelle est laquelle?
J'ai joué avec l'utilisation de 3 /
et /** */
de commentaires descriptifs.
J'ai également utilisé un plugin VSCode pour mettre en évidence //TODO:
et//FIXME:
///
et les/** ... */
commentaires sont également utilisés par des générateurs de documentation, tels que Doxygen ou JSDoc. Si vous les utilisez ou utilisez des outils similaires, vous ne pourrez peut-être pas utiliser ce type de commentaire pour des commentaires descriptifs qui ne font pas partie de la documentation.Réponses:
Il existe une solution très simple à cela: supprimez le code commenté.
En réalité, il n'y a que deux bonnes raisons de commenter le code: tester quelque chose / faire une correction ou enregistrer le code que vous utiliserez peut-être plus tard. Si vous testez ou corrigez quelque chose, supprimez le code mis en commentaire dès que vous avez terminé le test ou le correctif. Si vous enregistrez du code que vous utiliserez peut-être plus tard, faites-en un code de première classe et placez-le à un endroit tel qu'une bibliothèque où il peut être utilisé à bon escient.
la source
En ajoutant à l'excellente réponse de @ RobertHarvey, je crois qu'il n'y a qu'une seule raison légitime que j'ai jamais rencontrée pour enregistrer le code commenté dans le contrôle de source, même temporairement: en cas de code de remplacement non évident qui ne devrait pas ou ne pourrait pas être utilisé pour une raison quelconque . Même dans ce cas, la plupart des commentaires devraient être l' explication, pas le code de remplacement. Cela pourrait être un bogue ou une fonctionnalité du langage qui n’est pas encore considérée comme stable. Cela pourrait ressembler à quelque chose comme ça:
Dans ce cas, le travail a déjà été effectué, mais vous ne pouvez pas encore en tirer parti. Si vous le supprimez, cela signifie que quelqu'un devra le redécouvrir plus tard. Il en va de même pour les solutions sous-optimales qui peuvent sembler supérieures à première vue ou pour des compromis délibérés avec des solutions similaires .
Attention: Ne laissez pas votre code avec des solutions alternatives. Chaque tâche peut être accomplie de multiples façons et il n’est pas rentable d’explorer cet espace pendant longtemps, à chaque changement. Les revues de code peuvent être un bon endroit pour découvrir ces commentaires manquants, lorsque votre collègue suggère une amélioration que vous avez déjà découverte sous-optimale.
la source
frobnicate(bar)
, pour que personne ne vienne essayer de «réparer» votre code «inélégant». Donc, vous leur montrez que vous savez que dans un monde parfait, lafrobnicate
fonction serait la voie à suivre, mais vous savez par expérience douloureuse que cela ne fonctionne pas correctement. On ne peut pas s'attendre à ce que le tiers considère cela comme un bogue, encore moins digne d'être corrigé; vous devez toujours laisser un commentaire aux futurs programmeurs (y compris vous-même) sur les raisons pour lesquelles vous n'avez pas adopté l'approche évidente.Hmm, j'ai lu cette question légèrement différemment de Robert qui affirme correctement que le code mis en commentaire doit être supprimé.
Si, toutefois, vous recherchez une convention pour marquer le code en vue de son retrait ultérieur, l'un de mes favoris est le suivant:
//b = false; //TODO: remove
Certains drapeaux de l'EDI
//TODO:
peuvent être commentés ou commentés. Sinon, c'est généralement une chaîne interrogeable. Il est préférable de suivre la convention établie par votre boutique, car cela peut se faire de plusieurs manières. Chaque base de code devrait le faire d'une manière. Le maintient consultable.Sans cette marque, la méthode automatisée consiste à utiliser le compilateur. Si supprimer le commentaire produit un code compilé, il doit s'agir d'un code commenté. Ecrire un plugin IDE qui vérifie que ce ne serait pas difficile. Mais il laissera du code commenté buggy derrière.
C'est pourquoi il est préférable de simplement marquer le code commenté comme code dès que vous le commentez. Cela vous permet de travailler de manière non destructive pendant que vous décidez si vous le souhaitez vraiment. Puisque nous sommes tous interrompus et oublions quelque peu, ne soyez pas surpris si certaines lignes sont enregistrées alors qu'elles sont dans cet état. S'ils le font, c'est bien qu'ils soient au moins clairement identifiés et consultables. Les macros de clavier m'ont aidé avec cela dans le passé. Il est difficile de s’interrompre au milieu de cela si vous pouvez le faire en appuyant simplement sur une touche.
Vous pouvez aller jusqu’à enchâsser la marque dans vos tests d’intégration continue. Oups, j'essaie de vérifier à nouveau avec les TODO en suspens.
la source
double buffer (flip on)
-> C prototype ou anglais ultra-concis? ne peut pas dire sans contexte, pas une construction entière correcte dans les deux langues. Certains faux positifs et négatifs sont inévitables lorsque les commentaires, de par leur nature, ne limitent pas la forme de leur contenu dans les deux sens.J'utilise des directives de préprocesseur pour supprimer le code, pas les commentaires du tout:
Cela rend la recherche très facile et mon surligneur de syntaxe le traite comme un commentaire. Je peux même le réduire en une seule ligne:
#if FALSE(...)
Vous pouvez développer cette idée pour avoir plusieurs options:
Et vérifier les erreurs au moment de la compilation:
Bien sûr, vous ne voulez pas abuser de cela, ou il devient difficile de dire ce qui est en train d'être compilé et ce qui ne l'est pas. Mais vous avez l’idée, et c’est le même problème que pour le code commenté ... du moment que vous ne l’utilisez que de manière statique. Si vos conditions sont dynamiques, c'est pire.
Pour déterminer lequel est lequel dans une base de code existante qui n'a pas du tout pris en compte ce problème, je ne pense pas qu'il existe une solution universelle. Vous devrez trouver des motifs vous-même et probablement coder une expression régulière pour les trouver.
la source
javascript
. Vous pouvez effectuer certains pré-traitements, mais cela étendra les capacités du système de compilation et le rendra non standard. Si vous n'avez pas de système de compilation ou si le système de génération ne prend pas en charge l'analyse et l'exécution de code, vous ne pourrez pas implémenter cette solution. Enfin, il ne répond même pas à la question: le code mis en commentaire n'est pas strictement équivalent au code activé de manière conditionnelle. Il peut s'agir d'un reste qui n'est pas censé être activé.Je suis d’accord avec la réponse selon laquelle l’ancien code devrait être supprimé plutôt que commenté, dans la mesure du possible, mais j’ai observé une convention pour les rares occasions où un code commenté est nécessaire.
(Ma base est C # mais ceci peut être appliqué à n’importe quel langage C-syntaxique, par exemple java)
la source
//
à la première colonne et, comme tout le code est indenté en retrait, le commentaire commence pratiquement toujours par le fait que le commentaire commence par quelques onglets. Les commentaires normaux ne reçoivent pas d’espace principal de moi, à moins qu’il n’y ait déjà d’autres commentaires comportant un espace principal à proximité. Ainsi, votre méthode échouerait de manière démesurée sur les commentaires que je produirais, et toute méthode conçue pour reconnaître mes motifs de commentaires échouerait de manière démesurée sur les vôtres.J'interprète toujours la question différemment, pensant que vous voulez trouver du code commenté.
Le code de style C doit contenir des points-virgules, alors qu'il est peu probable que les commentaires contiennent des points-virgules. Donc, pour le code commenté d'une seule ligne, vous pouvez utiliser cette expression régulière:
Pour le code commenté sur plusieurs lignes, il pourrait être
Remarque Visual Studio est un peu curieux à propos des sauts de ligne dans les expressions régulières; ils ne comptent pas comme des espaces, vous devez spécifier un \ n explicite.
la source
Si vous utilisez un éditeur avec un compilateur exécuté en arrière-plan (comme Xcode et Clang), vous pouvez simplement essayer de compiler le texte du commentaire. Par exemple, "une description concise" donne des erreurs, "b = false;" non. Vous pouvez ensuite utiliser une coloration syntaxique différente.
Une méthode plus simple consisterait en un plugin IDE utilisant certaines méthodes heuristiques, comme plusieurs mots d'une ligne autres que les mots clés pointant vers des commentaires, des points assortis pointant en accolade au code, etc.
la source
D'autres réponses ont couvert des variantes du thème "Ne commentez pas le code". Mais parfois, vous le voulez toujours pour référence.
Si vous avez réellement besoin du code pour rester, une meilleure solution consiste à entourer le code avec "#if 0 ... #endif", idéalement avec un commentaire indiquant pourquoi. Telle est la stratégie recommandée par diverses normes de codage, y compris MISRA.
la source
Simple, du moins pour moi - et en C / C ++. Les commentaires entre / * * / sont informatifs. Le code de test temporairement supprimé est commenté avec //.
Et il y a de bonnes raisons de laisser le code de test dans le fichier, mais commenté, au moins dans le genre de travail que je fais. Tôt ou tard, quelqu'un voudra qu'une modification soit apportée, ce qui nécessitera ce code. Annuler un commentaire sur un bloc prend une commande de l'éditeur, tout comme le commenter à nouveau lorsque vous avez terminé.
la source
#ifdef __DEBUG ... #endif
, ou n'importe quelle définition personnalisée que vous voulez utiliser.__DEBUG
C'est bien, car il suffit souvent de changer la configuration du projet pour l'obtenir. Mais la plupart des IDE vous permettent également de définir vos propres configurations, ce qui peut vous donner n'importe quoi à cet endroit.printf
/cout
ou un logiciel similaire pour corriger le code nouvellement écrit (ce que je reconnais avoir fait moi-même par le passé), il n'est vraiment pas très efficace de le laisser ici. Si quelqu'un veut faire des changements et sait quelles sont les variables pour lesquelles il a besoin d'informations, il est facile et rapide de l'écrire àprintf
nouveau, alors que si ce dev ne sait pas ce qui est nécessaire et ne fait pas commenter toutes cesprintf
déclarations, l'énorme bande de texte le terminal ne les aidera probablement pas non plus.