43 votes

Comment retenir à soi-même, de l'irrésistible envie de réécrire tout?

Le programme d'installation

Avez-vous déjà eu l'expérience d'aller dans un morceau de code pour faire un semblant de changement simple et se rendre compte alors que vous venez d'entrer dans une terre en friche qui mérite une attention sérieuse? En général, suivi d'un fonctionnaire FREAK OUT moment, où le sentiment écrasant de la réécriture de tout dans la vue commence à ramper vers le haut.

Il est important de noter que ce mauvais code n'est pas nécessairement les autres comme il peut en effet être quelque chose que nous avons écrit ou contribué dans le passé.

Problème

Il est évident qu'il y a de sérieuses code de la pourriture, horrible architecture, etc. qui doit être traitée. Le vrai problème, en ce qui concerne cette question, c'est que c'est pas le temps de réécrire le code. Il pourrait y avoir plusieurs raisons à cela:

  • Actuellement au milieu d'un cycle de publication, par conséquent, tous les changements devraient être minimes.
  • Il est 2:00 du matin, et le cerveau commence à s'éteindre.
  • Il aurait apparemment des effets négatifs sur le calendrier.
  • Le trou de lapin pourrait aller beaucoup plus loin que nos yeux sont capables de voir en ce moment.
  • etc...

Question

Alors, comment devrions-nous le solde de l'obligation de cesse d'améliorer le code, tout en étant aussi un développeur responsable? Comment pouvons-nous abstenir de contribuer à la fenêtre brisée de la théorie, tout en étant conscient des actions et le potentiel de l'imprudence qu'ils peuvent causer?


Mise à jour

Excellentes réponses! Pour la plupart, il semble y avoir deux écoles de pensée:

  1. Ne résistez pas à l'envie que c'est un bon à avoir.
  2. Ne pas céder à la tentation, car il va vous brûler sur le sol.

Il serait intéressant de savoir si plus de gens se sentent tout l'équilibre existe.

25voto

Chris Roberts Points 7543

Je suis un grand fan de faire des listes!

Dès que l'envie vous prend de le ré-écrire quelque chose - de passer 10 minutes à faire une liste des choses qui ont besoin de ré-écriture. Suivez toutes les ruelles qui vous mèneront plus loin dans le code qui a besoin d'attention et la liste de ceux, trop.

Espérons-le, à l'intérieur d'un laps de temps relativement court, vous aurez une des deux choses:

  • Une très longue liste qui a complètement vous met hors de vouloir réécrire quelque chose de nouveau.
  • Une liste qui, de fait, n'est-ce pas aussi longtemps, alors pourquoi ne pas vous gâter et aller pour une ré-écrire?!

17voto

Paul Tomblin Points 83687

J'ai trouvé que deux mois passés à la correction des bugs à cause de ma "inoffensif" ré-écriture a été assez pour me guérir de l'envie de faire ces sortes de choses sans un mandat clair/plan de projet pour le faire.

13voto

Chris Points 14136

Le projet le plus mémorable de ce genre pour moi s'est produite à environ 4 ans quand j'ai été appelé à un bureau à distance "aider" avec un projet qui était prévue dans 1 semaine pour les grands de la présentation au client et ne travaillait pas encore à tous. Le projet avait d'abord été délocalisés en Inde, et de l'OMI, un projet de gestion de la défaillance a entraîné une tonne de code spaghetti qui était trop fragmentée pour fonctionner correctement dans sa forme actuelle.

Après une journée complète de l'examen, j'ai présenté mon avis, de la gestion du projet tout simplement besoin de gros refactoring et de réorganisation ou de ne plus jamais le travail correctement. Le résultat de cette discussion était de 6 jours, 20 heures de travail / 4 heures de sommeil, 2 de qui j'ai en fait passé à dormir sur le canapé dans le hall d'accueil de l'entreprise en raison de la perte de temps lors de la conduite de retour à l'hôtel.

Les principales améliorations du code inclus:

  • L'Application des normes de nommage
  • Déplacé dans le contrôle de source
  • Développement d'un processus de construction
  • La Documentation des composants individuels

La plupart du code original a été laissé en place, mais simplement déplacé et réorganisé / remaniée pour la rendre viable à long terme. C'était l'enfer de la semaine? Assurez-vous. Il l'a fait de rendre le projet le plus de succès? Yep.

Je ne peux pas vivre avec code spaghetti, et je vais souvent à donner de mon temps personnel pour y remédier.

10voto

Orion Edwards Points 54939

Comment retenir à soi-même, de l'irrésistible envie de réécrire tout?

Devenu vieux*

Comme ce qui m'est arrivé, j'ai peu à peu perdu l'envie de réécrire tout. Pourquoi?

  • Une fois que vous avez fait cela à quelques reprises, vous vous rendez compte que vous finissent souvent dans une situation pire que vous avez commencé.
  • Même si vous êtes un don de dieu à la programmation et à vos brillantes de réécriture n'introduit pas de nouveaux bugs, vous aurez simplement pas d'avis ou de mettre en œuvre environ 30% de la petit bord-cas fonctionnalités/bugs choses qui comptent. Cela vous coûtera mois dans la fixation de la
  • Rien de porte en bas de votre exubérance irrationnelle, comme le temps. Souvent, cela est une triste perte, mais dans ce cas, c'est une victoire.

*(plus d'expérience peuvent aussi être un substitut approprié si vous n'avez pas le temps de devenir vieux)

8voto

VonC Points 414372

L'impulsion de réécriture est juste, à condition que:

  • vous de "geler" le code existant (avec étiquette)
  • vous commencez à le réécrire tentative dans une branche séparée
  • vous préparez d'abord une unité de test afin de vérifier le comportement actuel et assurez-vous de reproduire les fonctionnalités existantes...

Cela dit, vous devez équilibrer le processus de réécriture avec la mesure de la stabilité de l'héritage de code.
"Si ce n'est pas cassé, ne le répare pas" ;)

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