129 votes

Pourquoi le code inutilisé doit être supprimé?

J'ai entendu plusieurs fois que le code inutilisé doit être supprimé du projet. Cependant, il n'est pas clair pour moi: "pourquoi?".

Mes points pour ne pas supprimer, que sont:

  • Le Code est déjà écrit, et des efforts sont passé
  • Le Code peut être testé sur syntetical et environnement réel
  • S'ils sont bien organisés (groupés, paquet séparé, faiblement couplées, etc), il ne vous perturbe sur l'ensemble de l'analyse de code ou de refactoring
  • Le Code peut être utilisé à l'avenir
  • Quand il est supprimé, l'auteur peut se sentir mal à l'aise

Quelqu'un pourrait-il expliquer les avantages de la suppression (ou le maintien) de code inutilisé?

Merci à l'avance!

215voto

suspectus Points 5877

Voici quelques raisons pour lesquelles code inutilisé doit être enlevée:

  • Pour tous ceux qui travaillent sur un même projet, ils n'ont pas seulement à comprendre le code de travail, ils doivent comprendre le matériel non utilisé également. Cette est du temps perdu et crée de la confusion.

  • Il y a un danger qu'à un moment donné, quelqu'un va faire un changement qui, par inadvertance, impliquer le sommeil " code et peut introduire des bugs. Je sais qu'il est arrivé sur les projets sur lesquels j'ai travaillé.

  • La maintenance d'un code est une contrainte administrative. Par la préservation de l' ancien code redondant que la charge est augmentée. Par exemple, la fusion de modifications dans la branche principale devient plus difficile, car il n'y a plus de code pour plus de possibilité de faire une erreur.

  • Ce qui se passe au fil du temps de plus en plus de vieux code inutilisé est ajouté à la base de code. Cela augmente la confusion, le potentiel de l'incompréhension et de la surcharge administrative.

  • Les chances que le code inutilisé sera jamais utilisé de nouveau est très peu probable. Avec le temps, la possibilité de ré-utilisation diminue. Si le code retiré et est considéré comme suffisamment important pour que le code peut être ramifiée et documenté.

  • Tous les sentiments qu'un codeur peut avoir sur le code qu'ils peuvent avoir travaillé dur sur sont compréhensibles. Mais une partie de l'être professionnel il faut que ces pensées doivent mettre de côté pour le mieux bon. Le temps s'arrête pour personne et il n'y a pas de place pour la préservation historique de code dans une base de code.

38voto

Carl Manaster Points 23696

@suspectus a fait un excellent travail en présentant les raisons de la suppression de code; je voudrais l'adresse de vos balles pour garder le code.

  • Le Code est déjà écrit, et des efforts sont passé

Mais si le déjà-écrit le code n'est pas en cours d'utilisation, ce est le coût à seulement sans valeur (future). C'est l'effort investi en vain, et la préservation de la partie inutilisée du produit de ces efforts ne valide pas ces efforts. Nous avons garder le code parce que c'est utile, maintenant, non pas comme une sorte de monument à la mémoire des efforts de la part des auteurs.

  • Le Code peut être testé sur syntetical et environnement réel

Je suis désolé, je ne sais pas ce que vous entendez par là.

  • S'ils sont bien organisés (groupés, paquet séparé, faiblement couplées, etc), il ne vous perturbe sur l'ensemble de l'analyse de code ou de refactoring

S'il existe dans le code de base, peu importe comment bien organisé, il contribue à l'entretien et à la compréhension du fardeau. Vrai, il peut être organisé de manière à être de moins d'un fardeau, mais si il est parti, c'est pas un fardeau à tous.

  • Le Code peut être utilisé à l'avenir

Dans la méthode Agile de l'école, nous disons YAGNI: Vous ne Va pas avoir Besoin d'Elle. Oui, vous pourriez éventuellement avoir une utilité dans l'avenir, mais nous ne savons pas assez d'aujourd'hui sur les besoins de demain pour être en mesure de prédire qu'avec n'importe quel type de fiabilité. Penser autrement, c'est l'arrogance qui va vers la démesure. Ce que nous pouvons savoir à propos de demain, c'est: nous voulons que notre base de code pour être facile à modifier, et de code inutilisé enlève rien à cette caractéristique.

  • Quand il est supprimé, l'auteur peut se sentir mal à l'aise

L'auteur doit s'en remettre. Nous avons tous des choses écrites qui s'est avéré ne pas être utile - beaucoup mieux d'être en mesure de signaler à un organisme de code qui est utilisé (parce que les trucs inutilisés a été supprimé) que pour un corps de code où vous pouvez dire de quelques méthodes, "et que l'on est effectivement en cours d'utilisation!"

20voto

kenny Points 9150

N'est-il pas assez difficile de récupérer du code et de comprendre l'intention, mais maintenant vous devez déterminer quelles parties ne sont pas utilisées?

18voto

utnapistim Points 12060

Le Code est déjà écrit, et des efforts sont passé

Il est également inutile. Si vous ne l'utilisez pas pour rien, c'est (par définition) inutile, peu importe ce qu'il fait ou comment beaucoup d'efforts ont été consacrés.

Le Code peut être testé sur syntetical et environnement réel

Si c'est inutile, il est encore inutile, même si vous avez des tests sur elle. Si le code est inutile, les tests pour les il devrait inutiles (ainsi garder le code commenté il y, crée l'ambiguïté - gardez-vous des tests? si vous aviez code client, le code commenté, avez-vous commenter le code client ainsi?)

S'ils sont bien organisés (groupés, paquet séparé, faiblement couplées, etc), il ne vous perturbe sur l'ensemble de l'analyse de code ou de refactoring

De ne pas faire. Tous vos outils (source de contrôle, de l'analyse statique, de la documentation, une hotte, un compilateur, etc) fonctionnera plus lentement, parce qu'ils ont à traiter plus de données (et d'une plus grande ou plus petite partie de ces données est le bruit).

Si le code n'est pas bien organisé sur l'autre main, il gâchera l'analyse statique, refactoring, et tout les autres.

Vous êtes d'introduire du bruit de vos outils de saisie et en espérant qu'ils réagissent correctement avec lui.

Que faire si votre outil d'analyse statique calcule un commentaires/code ratio? Vous avez juste a tout fait foiré, avec quelque chose de pertinent, jusqu'à hier (ou chaque fois que le code a été commenté).

La plupart de tous, ont commenté les blocs de code à introduire des retards dans la compréhension du code pour le maintien et le développement et que de tels retards presque toujours le coût d'un lot. Demandez-vous ceci: Si vous avez besoin de comprendre la mise en œuvre d'une fonction, que feriez-vous plutôt à regarder? deux lignes d'un code clair, ou deux lignes de code et un autre vingt-six des commentaires qui ne sont plus réelle?

Le Code peut être utilisé à l'avenir

Si elle l'est, vous le trouverez dans votre équipe SCM de choix.

Si vous utilisez un compétent SCM et de compter sur elle pour garder le code mort (au lieu d'encombrer la source), vous devriez voir non seulement la personne qui a supprimé ce code (commit auteur), mais pour quelle raison (message de commit), et ce que d'autres changements ont été apportés avec elle (le reste de la diff pour valider).

Quand il est supprimé, l'auteur peut se sentir mal à l'aise

De la sorte?

Vous êtes (je suppose) de toute une équipe de développeurs qui obtient payé pour faire le meilleur logiciel que vous savez comment, et non pas "le meilleur logiciel que vous savez comment sans blesser les sentiments de X".

C'est une partie de la programmation, que la plupart de code écrit en fin de compte être écarté; par exemple, Joel Spolsky dit à un certain point, que pour son entreprise, environ 2% de code écrit, voit la production.

Si vous la priorité de l'ego de développeurs sur la qualité de la base de code, vous serez sacrifier la qualité de votre produit, pour ... quoi exactement? La préservation de l'immaturité de vos collègues développeurs? Protéger les attentes irréalistes de vos collègues?

Edit: j'ai vu une raison valable pour laisser en commentaire le code dans la source, et c'est un cas très précis: lorsque le code est écrit dans un étrange/un-formulaire intuitif et le propre façon de ré-écriture, il ne fonctionne pas pour une très subtile raison. Cela devrait également être appliquée qu'après une nouvelle tentative a été faite pour corriger le problème et à chaque fois que la tentative a présenté de nouveau le même défaut. Dans un tel cas, vous devez ajouter le commentaire intuitive code dans un commentaire, et d'expliquer pourquoi il n'a pas de travail (et donc les futurs développeurs de ne pas tenter la même modification à nouveau):

// note by <author>: the X parameter here should normally
// be a reference:
// void teleport(dinosaur& X);
// but that would require that we raise another dinosaur and
// kill it every twelve hours
// as such, the parameter is passed by value
void teleport(dinosaur X);

4voto

Ankur Points 23539

Tout d'abord, vous devriez toujours utiliser une source d'outil de contrôle de gestion des projets et, partant, la suppression de code inutilisé est une bonne pratique que vous pouvez toujours revenir en arrière à l'aide de contrôle de source pour obtenir le code supprimé. Pour moi la raison pour supprimer code inutilisé est que seule la personne qui connaissent le code est inutilisé sait à ce sujet, quelqu'un d'autre dans l'équipe viennent à travers ce code et essayer de comprendre ce qu'il fait et comment il s'intègre dans l'ensemble de l'application et se sent déçu après tant d'efforts que le code n'est pas utilisé à tous :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X