56 votes

À quelle fréquence devriez-vous refactoriser?

J'ai eu une discussion il y a quelques semaines avec quelques collègues sur le refactoring, et j'ai l'impression d'être dans une minorité qui croit "Refactor début, refactoriser souvent" est une bonne approche qui maintient code de se salissant et difficile à maintenir. Un certain nombre de d'autres gens pensaient qu'elle appartient à l'entretien des phases d'un projet.

Si vous avez un avis, merci de le défendre.

78voto

jop Points 31978

Comme vous l'avez dit: refactoriser début, refactoriser souvent.

Refactoring tôt signifie les changements nécessaires sont encore frais dans mon esprit. Refactoring veut souvent dire que les variations tendent à être plus petits.

Retarder refactoring finit de faire un gros gâchis qui a encore plus de difficulté à refactoriser. Le nettoyage dès que j'ai remarqué le désordre, il l'empêche de se développer et de devenir un problème plus tard.

34voto

Bill the Lizard Points 147311

Je refactorisation de code dès qu'il est fonctionnel (tous les tests passent). De cette façon, je le nettoyer pendant qu'il est encore frais dans mon esprit, et avant tout le monde voit la laideur de la première version a été.

Après le check-in en général, je refactoriser chaque fois que je touche un morceau de code. Refactoring n'est pas quelque chose que vous devriez mettre de côté des fois pour. Il devrait être quelque chose que vous venez de faire, comme vous allez.

23voto

Garth Gilmour Points 5219

Vous écrivez du code, avec deux chapeaux. Le juste-à-obtenir-la-chose-travail chapeau et la j'ai-besoin-pour-comprendre-ce-demain chapeau. Évidemment, le deuxième chapeau est le refactoring. Si vous refactoriser chaque fois que vous avez fait quelque chose à travailler, mais ont (forcément) introduit sent le code dupliqué, le long des méthodes, de la fragilité de la gestion des erreurs, de mauvais noms de variables, etc...

Refactoring, tout en essayant d'obtenir quelque chose de travail (c'est à dire de porter les deux chapeaux) n'est pas pratique pour les tâches non négligeables. Mais le report de refactoring jusqu'à la prochaine journée/semaine/itération est très mauvais parce que le contexte du problème aura disparu de votre tête. Donc, passer entre les chapeaux aussi souvent que possible, mais jamais de les combiner.

18voto

Bob King Points 12913

Je refactoriser toutes les chances que je reçois parce que ça me permet de parfaire mes code dans le meilleur qu'il peut être. Je le fais même si activement à développer pour éviter de créer du code difficile à maintenir à la première place. Il a également souvent me permet de redresser une mauvaise décision de conception avant qu'il ne devienne irrécupérable.

13voto

Steve Jessop Points 166970

Trois bonnes raisons de refactoriser:

  • Votre conception originale (peut-être dans une zone très petite, mais le design néanmoins) était erronée. Cela inclut où vous découvrirez une opération commune et souhaitez partager le code.
  • Vous concevez de manière itérative.
  • Le code est tellement mauvais qu'il a besoin d'une rénovation majeure.

Trois bonnes raisons de ne pas refactoriser:

  • "Cela ressemble un peu bordélique".
  • "Je ne suis pas entièrement d'accord avec la manière dont le dernier gars a fait ceci".
  • "Il pourrait être plus efficace". (Le problème, c'est 'pourrait').

"Malpropre" est sujette à controverse, il y a un argument valable diversement appelé "la fixation de la vitre brisée", ou "code de l'hygiène", ce qui suggère que si vous laissez les petites choses de la diapositive, puis vous allez commencer à nous de grandes choses glissent trop. C'est très bien, et c'est une bonne chose à garder à l'esprit, mais n'oubliez pas que c'est une analogie. Il n'est pas une excuse de manœuvre des trucs autour de interminably, à la recherche de la plus propre possible solution.

Combien de fois vous refactoriser devrait dépendre de la façon dont souvent les bonnes raisons de se produire, et le degré de confiance vous que votre processus de test vous protège contre les introduire des bogues.

Refactoring n'est jamais un but en soi. Mais si quelque chose ne fonctionne pas, il doit être corrigé, et c'est aussi vrai dans le développement initial, car il est en cours de maintenance. Pour les non-trivial changements, il est presque toujours préférable de refactoriser, et d'intégrer les nouveaux concepts proprement, que pour patch un seul endroit avec beaucoup de morceaux de ferraille afin d'éviter toute modification ailleurs.

Pour ce que ça vaut, je ne pense rien de l'évolution de l'interface qui vous est fournie que j'ai une idée sur ce qui l'utilise, et que la portée de ce changement est gérable.

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