Comment déterminer s'il existe du code supprimé utile dans le contrôle de code source?

9

Je lisais donc cette question. Dois-je supprimer le code non référencé?

Certains des conseils étaient de supprimer le code non référencé car le code est dans le contrôle de source pour référence au cas où il serait nécessaire plus tard.

Comment organisez-vous ce code supprimé pour qu'une version ultérieure de vous (ou d'un autre programmeur) puisse le retrouver plus tard? Créez-vous une branche distincte ou la marquez-vous dans le contrôle de source d'une manière ou d'une autre?

Je n'ai jamais ressuscité de code supprimé hors du contrôle des sources auparavant, je l'ai principalement utilisé pour suivre les modifications du code qui est toujours en ligne. J'ai déjà référencé des branches lorsqu'elles contenaient le travail expérimental de quelqu'un d'autre, alors c'est peut-être un bon moyen de marquer des sections intéressantes de code qui sont supprimées dans le tronc?

Peter Smith
la source
quels vcs demandez-vous à avout? sonne comme svn
gnat
svn est ce que j'ai en tête, mais pourrait s'appliquer à n'importe quel contrôle de source, je pense?
Peter Smith
Vous dites: "Ce que j'ai en tête, ce sont des projets annulés ou reportés" en réaction à une réponse. Je pense que vous devriez éditer votre question car c'est très différent du "code non référencé".
Pieter B

Réponses:

6

Sauf si vous expérimentez dans une branche et n'êtes pas encore sûr de la solution qui sera finalement réintégrée, vous ne faites généralement pas référence au code supprimé.

Vous pouvez, en de très rares occasions, rechercher explicitement le code supprimé dont vous vous souvenez vaguement avoir résolu un problème que vous rencontrez actuellement . Mais, la raison la plus courante pour laquelle vous verrez du code supprimé est lorsque vous parcourez le backlog pour comprendre quelque chose sur le code ou le comportement actuel d'une application par rapport à son code ou comportement historique.

Plus précisément, vous pourriez être ...

  • faire une révision générale du code / comprendre un refactor
  • à la recherche du commit qui a introduit le bug X
  • satisfaire votre curiosité / rechercher le commit qui a résolu un bug
  • réimplémentation d'une fonctionnalité ou d'une fonctionnalité similaire
  • comprendre le code ou les données qui semblent fonctionner en conjonction avec du code qui n'existe pas

... etc.

Et dans ces cas, vous ne ressuscitez généralement pas l' ancien code. Vous comprenez simplement quelque chose que vous voyez en ce moment en utilisant du code supprimé pour le contexte ou des conseils.

svidgen
la source
4

Je suppose que la réponse est: la grande majorité des programmeurs ne se soucient pas de référencer le code supprimé. Pour plusieurs raisons. Voici quelques raisons qui me viennent à l'esprit:

  • Le plus important probablement, la pure paresse ...

  • La plupart n'ont jamais ressenti le besoin de ressusciter du code, ils n'ont donc aucune expérience qui les motive à faciliter la résurrection du code.

  • La plupart du code supprimé est supprimé pour une raison. Habituellement, il est remplacé par un autre code, meilleur, fonctionnellement équivalent ou plus puissant. Pourquoi voudrait-on ressusciter le code inférieur?

    Notez que c'est également un problème psychologique: la plupart des programmeurs sont assez fiers des résultats de leur travail. Comment pourrait-il jamais venir à l'esprit qu'il y avait encore une certaine valeur dans ce qu'ils remplaçaient?

  • Étant donné que la plupart du code n'est pas purement supprimé, mais remplacé, les interfaces qui ont été modifiées au cours de la transition fournissent suffisamment d'informations si vous avez vraiment besoin de retrouver le code supprimé en raison de certaines régressions introduites par le nouveau code.

Mais, indépendamment des raisons plus ou moins valables que vous pouvez mettre derrière ce mépris pour le code mort, je pense que c'est vraiment juste un "ne se soucie pas" de la part des programmeurs. Et même si vous essayez de marquer des éléments supprimés d'une manière ou d'une autre, préparez-vous à être complètement ignoré avec cet effort ...

cmaster - réintégrer monica
la source
Je suppose que je vais essayer de répondre pourquoi. S'il est remplacé par du code, cela a du sens après un court laps de temps, le code supprimé n'est plus vraiment nécessaire. Ce que je pense de plus, ce sont des projets annulés ou reportés. En particulier ceux où une grande quantité de fonctionnalités ont été développées ou modifiées, mais finalement pas complètement achevées et non utilisées dans la production actuelle.
Peter Smith
1
@PeterSmith: Vous devez créer des branches distinctes pour ce code. Ensuite, il n'est pas nécessaire de supprimer le code, car il n'existe de toute façon pas dans la branche de travail.
JacquesB
Pour ajouter à ce que @JacquesB a dit, si vous avez du code qui n'est pas utilisé du tout, il a tendance à devenir obsolète assez rapidement. Vous pourrez peut-être faire revivre une branche morte après un an, après cinq ans, vous devrez recommencer à zéro. La branche morte peut toujours être utile comme source d'idées, mais son code lui-même n'est probablement plus utilisable.
cmaster - réintègre monica
1

Cette question revient probablement sur "Comment conservez-vous la traçabilité de vos connexions VCS par rapport à la base de données de bogues et à la configuration système requise?"

Les moments où les gens vont ressusciter du code à partir du contrôle de source ont tendance à être ceux où vous découvrez que quelque chose s'est accidentellement cassé et doit être ramené.

La chose la plus importante dans ce scénario pour quelqu'un qui recherche un morceau spécifique de code supprimé est qu'il peut facilement le retrouver en parcourant la base de données des exigences et l'outil de suivi des bogues; car ils sont susceptibles de rechercher l'exigence spécifique ou des mots qui décrivent la fonctionnalité. Il est peu probable qu'ils connaissent le nom du fichier source ou la classe / fonction qui a été supprimée.

Si vous souhaitez suivre un code intéressant / expérimental qui doit être retiré avant la sortie, vous pouvez simplement le tracer avec des tickets de "bug" du type "Supprimer le code inutilisé pour ..." . Ou peut-être introduire un nouveau type de ticket dans le système pour la fonctionnalité Prototype .

Donc, pour répondre directement à la question - n'utilisez pas de branches / balises dans votre système VCS pour suivre le code supprimé - utilisez votre outil de suivi des modifications.

Ben Cottrell
la source
0

Le conseil est destiné aux personnes qui gardent du code obsolète dans la base de code "juste au cas où". Étant donné que le code existera toujours dans le contrôle de code source, vous ne devriez pas craindre de le supprimer. Vous n'organisez pas vraiment le code supprimé en tant que tel, car le fait est qu'il n'est plus nécessaire. Vous venez d'ajouter un message de validation qui indique ce qui a été modifié et supprimé dans la validation. Le message de validation le plus pertinent pour le code supprimé est le message au moment où le code a été initialement ajouté, pas le message lorsqu'il a été supprimé à nouveau.

Le «travail expérimental» est vraiment une question différente. Vous devriez avoir une branche distincte pour cela.

JacquesB
la source