Commentaires sur le contrôle de version - passé ou présent [fermé]

12

Pour les commentaires sur le contrôle de version, que font / recommandent les autres utilisateurs - au passé ou au présent?

C'est à dire

  • Modifié x en y.
  • ou
  • Changer x pour y.
Robert W
la source
27
Vous ne voulez pas dire "contrôle de version vérifiant les commentaires"? Je n'ajoute jamais de commentaires documentant les changements dans le code réel. Il l'encombre.
JohnFx
1
Je suis vraiment confus - si @JohnFx est correct, alors c'est une question complètement différente. Personnellement, je ne vois pas pourquoi @Robert ne pouvait pas signifier des commentaires dans le code source.
Armand
FYI: Je voulais dire Check-in, pas "checking"
JohnFx
Désolé - juste pour dissiper la confusion, je voulais dire des commentaires de contrôle de version plutôt que des commentaires dans le code source. La question a été mise à jour.
Robert W

Réponses:

19

Les commentaires doivent être lus dans leur contexte, donc:

Présent

Pour les commentaires source au-dessus d'une méthode, ou avant qu'un problème ne se produise:

// This function does X
function doX() { ... }

Passé

Pour les commentaires source après un certain comportement

function doX() {
    widget.doY()
    // did Y to widget to prepare it for Z
    ...
}

Et pour valider les messages

la fonction X a changé


Exemple mixte:

// This function does X
function doX() {
    widget.doY()
    // did Y to widget to prepare it for Z
    ....
}
Armand
la source
NB Je pense que tous les commentaires dans le code ci-dessus sont superflus, mais ils ne seraient pas nécessairement dans un exemple non trivial.
Armand
7
Maintenant que la question a changé, cette réponse est légèrement hors sujet.
Armand
22

Passé - Puisque quiconque le lira à l'avenir se référera à l'acte du changement comme cela s'est produit dans le passé.

Formuler quelque chose comme "Modification" implique que vous êtes actuellement en train d'effectuer la modification et que le code n'est peut-être pas terminé.

note: Personnellement, je ne mets de commentaires de modification que lorsqu'un changement radical s'est produit.

Tim
la source
10

Les commentaires sont les choses statiques, donc ils devraient présenter l'état du programme comme il est , et non pas comme il va être. Pour répondre à votre question spécifique, il serait plus approprié d'utiliser le passé .

Cependant, ce type de commentaire est mieux adapté à votre système de contrôle de version. Le contrôle de version fait un bien meilleur travail de suivi des modifications que les commentaires manuels. Avec les systèmes de contrôle de version, il est plus approprié de documenter au présent car ces commentaires s'appliquent au moment où la modification est validée. Mais, l'un ou l'autre fonctionnera.

Je recommanderais fortement que les seuls commentaires dans votre code soient ce qui est nécessaire pour comprendre le code lui-même - le but, la logique métier et les cas exceptionnels. Laissez la documentation du jeu de modifications à votre système de contrôle de version. Si vous n'utilisez pas de VCS, commencez maintenant. Il existe plusieurs VCS de haute qualité gratuits (Subversion, Mercurial, Git, etc.).

Berin Loritsch
la source
3
+1, bien que je pense que les commentaires sur le contrôle de version devraient également être au passé. :-)
Eric King
Ce n'est pas trop mal d'avoir un fichier journal des modifications séparé; la mise en quarantaine des commentaires de commit ne fera pas trop de mal, mais les vaporiser sur chaque fichier n'est qu'un bruit douloureux.
Donal Fellows
Les messages d'engagement peuvent aller dans les deux sens. J'ai tendance à y voir que c'était la présente action pour la raison du commit à l'époque. À la fin de la journée, c'est un domaine de l'anglais qu'il est probablement OK de ne pas couper les cheveux. Ce n'est pas comme "Eats, Shoots and Leaves" en.wikipedia.org/wiki/Eats,_Shoots_%26_Leaves
Berin Loritsch
10

J'utilise le présent impératif, donc quelque chose comme:

Remplacez «x» par «y»

Ceci est recommandé par les développeurs Git:

  • le corps doit fournir un message de validation significatif, qui:
    • utilise l'impératif, le présent: "changer", pas "changé" ou "changements".

Cela peut sembler un peu étrange au début, mais si vous considérez un commit comme un patch qui fait quelque chose, cela a plus de sens. (Cela est particulièrement vrai dans un DVCS comme Git, où vous extrayez des changesets d'autres personnes qui agissent sur votre repo.)

mipadi
la source
1
Je suis d'accord que cela semble étrange au premier abord, et le voir comme un patch est certainement la bonne voie à suivre. Une chose que j'ai faite est de réciter "ce patch" dans ma tête avant de lire mon message de validation. C'est un changement de se demander "Qu'est-ce que j'ai fait dans ce patch?" (Correction d'un bug de threading) pour vous demander "Que fera ce patch?" (Correction d'un bug de threading).
Nick Knowlson
5

Cela n'a pas vraiment d'importance; Je pense que c'est un style et une préférence personnels. Comme par écrit presque n'importe quoi, soyez juste cohérent avec vous-même et avec les autres commentaires.

G__
la source
2

Les commentaires du code doivent être naturels à lire.

Si vous lisez le code vous disant « Ce code est en train de faire X » alors vous devriez écrire le commentaire dans le temps présent comme il est probable que la façon dont une personne lisant le code à ce moment - là pensera aussi bien. Si de l'autre vous pensiez à un moment donné "Ce code a fait X", alors ça devrait être passé. En fin de compte, cela se résume à des préférences personnelles, sauf si pour une raison quelconque, vous êtes sous des directives sur la façon de commenter votre code (par exemple pour un projet d'équipe ou pour une classe, etc.)

Kenneth
la source
1

Si vous utilisez git, la convention consiste à utiliser le temps présent car les messages de commit générés avec les outils git (par exemple la fusion) utilisent le temps présent.


la source
1

Vous devez utiliser le passé.

La raison étant que vous répondez à la question à quoi cet engagement a-t-il abouti? Considérez-le comme disant à votre VCS ce que vous avez fait:

Commit 123
XYZ modifié pour faire ABC

Pour donner des contre-exemples, utiliser le futur donne l'impression que vous demandez à quelqu'un de le faire:

Commit 123
Changer XYZ pour faire ABC

et en utilisant le présent, on dirait que vous êtes à mi-chemin:

Commit 123
Changer XYZ pour faire ABC

Garry Shutler
la source
0

Utilisez le temps présent: «Changer X en Y», presque comme s'il s'agissait d'un élément sur une liste TODO claire.

En général, tout comme un scénario, évitez les verbes comme "être" et "est". Par exemple, ce n'est pas «il marche», mais «il marche».

Mais dans cet exemple particulier - si vous parlez de commentaires de code, et non de commentaires d'enregistrement - je pense que "Changer X en Y" est un commentaire terrible. Il n'ajoute aucune nouvelle information, et si le code devait changer, il pourrait même être incorrect. Il vaut mieux extraire le code dans une méthode (ou une classe), puis documenter cette méthode à la place. Si c'est assez clair, alors un bon nom de méthode suffira.

En parlant de cela, pour documenter les méthodes, vous pourriez utiliser le futur, par exemple: "Si le nombre fourni est négatif, absretournera l'ampleur du nombre."

Macneil
la source
0

Les commentaires sont (ou devraient être), comme tout ce qui est écrit, des expressions de quelque chose, et ils devraient simplement suivre les mêmes règles dans les langues naturelles (en tenant compte des raccourcis et des abréviations spécifiques à la situation ou à l'artefact documenté.

Les commentaires sur le temps présent ( .ie "ça change" ou "ça change" ) indiquent qu'une donnée exploitée par l'algorithme documenté est affectée d'une manière ou d'une autre. C'est-à-dire qu'il indique ce que fait le code ou ce qui se passe pour les données manipulées.

Les commentaires au passé doivent indiquer une affirmation, une condition préalable ou une post-condition de quelque chose qui s'est produit avant le point où réside le commentaire. Par exemple:

L'entrée a déjà été validée avant de saisir ce bloc de code

ou

Des données ont été écrites dans un fichier à la fin de ce code en cours d'exécution

Les commentaires au passé peuvent également expliquer pourquoi quelque chose est fait ( cette fonction fait X et Y pour résoudre un problème avec la base de données héritée. )

Les commentaires au passé indiquant une modification du code lui-même (.ie. X a été remplacé par Y ) ne doivent pas exister dans le code. Ils devraient plutôt exister en tant que commentaires de révision dans le référentiel de code source.

À l'avenir, les commentaires devraient indiquer une condition qui doit être remplie ou traitée, mais qui, pour X ou Y, ne se fait pas pour le moment. Par exemple:

Lorsque nous migrerons finalement la base de données, nous devrons changer cette logique

ou

TODO: dès que possible, revisitez la validation de l'entrée - elle peut échouer pour le type d'entrée X ou Y, peut nécessiter des changements massifs qui ne peuvent pas être implémentés pour le moment.

Pour le type de commentaires TODO ultérieur , une autre forme de documentation doit exister pour garantir que ces modifications ont bien lieu. La dernière chose que vous voulez, ce sont des TODO perdus dans le temps et l'espace: P

Prenez-le avec un grain de sel, mais ce sont généralement les règles que je respecte habituellement lorsque je fais mes propres commentaires.

luis.espinal
la source
0

Commentant est sur la communication à l' être humain, donc en cohérence est importante, il est important ne pas nous enliser dans les principes lorsque les principes eux - mêmes obtenir de la manière d' une bonne communication. Cela dit, j'utilise les pseudo-normes suivantes:

  • Les commentaires décrivant un comportement souhaité prennent la forme d'une phrase impérative au présent.

    // Calculate the width of the curve at x height.
    
  • Utilisez un ensemble de mots clés tout en majuscules pour décrire les thèmes courants du codage (et pour faciliter la recherche):

    // NOTE: <This code was written this way for a reason.>
    // TODO: <This code is incomplete. Finish it.>
    // HACK: <This code was written this way for a reason that you won't like.>
    // FIXME: <This code has a known flaw. Fix it.>
    
kojiro
la source