Je tente de refactoriser une application Winform existante pour utiliser le modèle MVP Passive View. L'interface utilisateur, la logique métier et le code de stockage des données de l'application ont été mélangés librement pendant des années. On dirait que soit il a commencé avec des couches séparées ou quelqu'un a tenté de le séparer en couches. Dans tous les cas, les limites de la couche n'ont pas été respectées. Comme les formulaires manipulent directement les objets de domaine et la source de données (et vice versa), ma première tâche consiste à créer des objets de présentateur/contrôleur et à déléguer ces responsabilités.Refactoring WinForm ClickNCode à MVP Passive View
L'application est une application .NET 1.1 et je développe dans VS.NET 2003 avec un complément de refactoring plutôt limité. J'ai utilisé un générateur de test pour le code existant pour créer les tests unitaires de la plaque de chaudière, puis j'ai passé en revue et modifié manuellement chaque test. Certes, cela finit par tester ce que fait le code, pas nécessairement ce qu'il est censé faire. Pour les nouvelles classes, je fais TDD.
Des conseils, des ressources, des pièges à surveiller avec un effort de refactoring de cette échelle?
Quelques ressources que je l'ai déjà à ma disposition:
- Collection de livres de programmation; refactorisation, PEAA, WELC
- Internet (évidemment)
- De grandes quantités de boissons contenant de la caféine
Mise à jour: À titre d'exemple quelles mesures prendriez-vous pour transformer ceci:
private void OneOfManyFormEventHandlers(object sender, System.EventArgs e)
{
string LocalVariable;
decimal AnotherLocal;
if (!this._SomeDomainObject.SomeMethod(ClassField, out LocalVariable, out AnotherLocal))
{
MessageBox.Show("An error occurred calling method");
return;
}
this.FormControl.Value = LocalVariable;
this.AnotherFormContorl.Value = AnotherLocal;
this.AnotherPrivateMethod();
}
Dans ce:
private void OneOfManyFormEventHandlers(object sender, System.EventArgs e)
{
this.FormPresenter.DoSomething();
}
Recommandez-vous « Travailler efficacement avec Legacy Code »? Je n'en avais jamais entendu parler auparavant. Bonne chance d'ailleurs, je crains de ne pas avoir de conseils utiles à vous offrir –
Oui, c'est un excellent livre. Il donne quelques techniques très utiles pour le code sous test qui n'a pas été conçu à l'origine pour cela. Pour moi, le plus utile était * Extract Interface * –