J'ai un gros gâchis de code. Certes, je l'ai écrit moi - même- il y a un an. Ce n'est pas bien commenté mais c'est pas très compliqué non plus, donc je peux le comprendre, -- tout simplement pas assez bien pour savoir par où commencer pour aussi loin que la refactorisation.
J'ai violé toutes les règles que j'ai lu au cours de la dernière année. Il y a des classes avec de multiples responsabilités, il y a des accès indirects (j'ai oublié le terme - quelque chose comme foo.bar.doSomething()
), et comme je l'ai dit il n'est pas bien commenté. En plus de cela, c'est le début d'un jeu, de sorte que le graphique est couplé avec les données, ou les endroits où j'ai essayé de dissocier les graphiques et les données, j'ai fait les données public
pour les graphismes pour être en mesure d'accéder aux données dont il a besoin...
C'est un énorme gâchis! Où dois-je commencer? Comment voulez-vous commencer sur quelque chose comme cela?
Ma démarche actuelle est de prendre les variables et commutateur privé et ensuite refactoriser les pièces qui se brisent, mais qui ne semble pas être suffisant. S'il vous plaît suggérer d'autres stratégies pour patauger à travers ce gâchis et de la transformer en quelque chose de propre pour que je puisse continuer là où j'ai laissé!
Mise à jour, deux jours plus tard: j'ai été le dessin UML-comme les diagrammes de mes classes, et la capture de certains de la "Low Hanging Fruits" le long du chemin. J'ai même trouvé quelques morceaux de code qui ont été les débuts de nouvelles fonctionnalités, mais comme je suis en train de slim tout en bas, j'ai été en mesure de supprimer les bits et le projet se sentir plus propre. Je vais probablement refactoriser autant que possible avant de gréement mon cas de test (mais seulement les choses qui sont à 100% certain de ne pas l'impact de la fonctionnalité, bien sûr!), de sorte que je n'aurai pas à refactoriser cas de test que j'ai du changer la fonctionnalité. (vous pensez que je suis en train de faire ou serait-il, à votre avis, être plus facile pour moi de le sucer et écrire les tests en premier?)
Merci de voter pour la meilleure réponse afin que je puisse marquer manière assez! N'hésitez pas à ajouter votre propre réponse à la grappe ainsi, il y a encore de la place pour vous! Je vais lui donner un jour ou deux et puis probablement la marque la plus voté réponse acceptée.
Merci à tous ceux qui ont répondu jusqu'à présent!
25 juin 2010: j'ai découvert un blog qui répond directement à cette question de quelqu'un qui semble avoir une assez bonne connaissance de la programmation: (ou peut-être pas, si vous lisez son article :) )
À cette fin, je fais quatre choses quand j' besoin de refactoriser le code:
- Déterminer quel est le but du code est
- Tirage UML et les diagrammes d'action des classes concernées
- Magasinez pour le droit des modèles de conception
- Déterminer le plus clair de noms pour le courant de classes et de méthodes