jeder Ich habe ein Problem mit dem Legacy-Code in ASP.NET MVC-Anwendung, In diesem Code gibt es eine Klasse Service in der Business-Logik-Ebene. Diese Klasse hat eine Methode mit 20 Argumenten. Diese Methode erstellt eine Objektinstanz mit diesen 20 Argumenten. Wie man diesen Code umgestaltet, weil dies ein Problem ist, wenn die erzeugten Objekte geändert werden und die Argumente in der Methode geändert werden müssen. Diese Serviceklasse wird in der Controller-Klasse und im Unit-Test verwendet. Hilf mir diesen Code zu refaktorieren Vielen Dank im Voraus.
BEARBEITEN Zusätzliche Informationen:
Ich kann die Signatur der Methode zeigen
%Vor%Ich denke, es ist notwendig, Kely und Chevex Ansatz anzuwenden, zum Beispiel kann ich einige Klassen extrahieren
wird aus Parametern sein:
%Vor%andere
%Vor%Und nach dem Extrahieren von Subklassen kann ich das Introduce-Parameter-Objekt korrekt anwenden, verstanden?
Erstellen Sie ein Objekt, das diese 20 Argumente enthält, und übergeben Sie dieses Objekt an die Methode.
Zum Beispiel:
%Vor%BEARBEITEN
Während dieses Muster für einen einmaligen Refactor nützlich sein kann, sollten Sie, wenn Sie dieselben Argumente in mehreren Methoden verwenden, Chevex Antwort. Es ist der bessere Ansatz.
Sie könnten versuchen, verwandte Daten in den Argumenten zu identifizieren und sie in ihre eigenen benutzerdefinierten Objekte einzubeziehen. Angenommen, Sie haben dieses Objekt:
%Vor%Versuchen Sie, dies in zwei Klassen umzuwandeln, indem Sie die zugehörigen Adressinformationen in seine eigene Klasse extrahieren und dann dieses Objekt als eine Eigenschaft des ursprünglichen Objekts hinzufügen:
%Vor%Ohne weitere Informationen würde ich sagen, dass dies der beste Ansatz ist.
Tags und Links c# refactoring