Question

Pardonnez-moi si cela est dupe, mais je ne pouvais pas trouver quelque chose qui a frappé cette question exacte.

Je travaille avec une application héritée qui est couplé très bien. Nous retirons certaines des fonctionnalités importante parce que nous allons obtenir cette fonctionnalité d'un service externe.

Quelle est la meilleure façon de commencer à retirer le code maintenant utilisé? Devrais-je commencer à la base extrême, enlever, et Refactor mon chemin jusqu'à la pile? Pendant le déjeuner, je vais aller jeter un oeil à Travailler efficacement avec Legacy Code .

Était-ce utile?

La solution

Si vous le pouvez, et il est logique dans votre domaine de problème, je voudrais essayer, pendant le développement, essayer de garder le code existant qui fonctionne en parallèle avec la nouvelle API. Et utiliser les résultats de l'API héritage pour traverser vérifier que la nouvelle API fonctionne comme prévu.

Autres conseils

Je pense que la chose la plus importante que vous pouvez faire est de factoriser / supprimer / test en morceaux très petits. Il est fastidieux et prend du temps, mais il contribuera à limiter les risques et les erreurs plus tard.

Je voudrais également commencer par le code qui est « faible risque » pour changer.

Mon conseil est d'utiliser findbugs et PMD / CPD (copier-coller détecteur) pour supprimer le code mort (code qui ne peut pas ou ne sera pas appelé) les variables inutilisées et le code dupliqué. Se débarrasser de cette ordure fera refactoring plus facile.

Pour en savoir ensuite les applications clés pour la refactoring commune dans votre IDE. Extraire une méthode et d'introduire variable doit être confiée à la mémoire musculaire après une heure.

Utilisez le principal inconvénient d'un code couplé étroitement à ... votre avantage! Étape 1: Identifier la zone qui fournit la fonctionnalité redondante que vous souhaitez remplacer. Break it ... faire un test de fumée rapide de certaines des parties critiques de l'application. Obtenez la sensation.

Étape 2:. En fonction de quelle langue il est de trouver les outils d'analyse statique de code pertinents et obtenir les informations nécessaires refactoring

Étape 3:. Répétez l'étape 1 à des niveaux différentiels de rétrécissement à la configuration exacte

Tout cela bien sûr, dans un environnement de bac à sable. Cela peut sembler un peu hasardeux, mais si vous vous limiter à des tests de fonctionnalités critiques ... vous pouvez obtenir de nombreuses pistes dans le processus. Vous identifierez certainement le modèle du code existant, si rien d'autre.

Vous ne pouvez absolument pas faire avec une version de développement en direct [nouvelles fonctionnalités ajoutées]. Vous devez commencer par un gel des fonctionnalités.

J'ai tendance à regarder tous les composants du système dans une vue d'ensemble et voir les plus grands lieux de réutilisation. De là, je mettre en œuvre le modèle de conception appropriée pour le résoudre, et que le nouveau réutilisable composant. Ecrire des cas de test pour assurer le nouveau code fonctionne comme prévu, alors refactoriser votre code autour du nouveau changement. Répétez ensuite [aperçu, etc] jusqu'à ce que vous êtes satisfait.

Je suggère cela pour de nombreuses raisons:

  1. Tous ceux qui travaillent avec vous sur refactoring apprendre quelque chose
  2. Les gens apprennent à éviter les erreurs de conception sur la route
  3. Tous ceux qui travaillent sur elle aura une meilleure compréhension de la base de code
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top