Frage

Ich habe derzeit eine VB.NET Klasse mit dem Namen "Kunden" und es wächst ständig an Größe und ich haben jetzt ein paar Dutzend Funktionen.Gibt es eine Möglichkeit, die der Aufrechterhaltung der Funktionen in der gleichen Klasse?Da Sie immer noch die Nutzung von gemeinsamen privaten Methoden, aber diese Gruppe von ähnlichkeit.

Zum Beispiel:

Class Customers
-GetData
---GetCustomerObject()
---GetCustomerFieldx()
-Lists
---GetSomeList()
---GetAnotherList()
-Maintenance
---AddCustomer()
---DeleteCustomer()
---UpdateCustomer()

UPDATE: Ich glaube, ich war nicht klar, wo ich wollte diese Gruppierung auftreten.Ich will die Gruppierungen zu sein, fast wie namespaces/Klassen in IntelliSense wenn ich mit meinem Kunden.Klasse.Ich verwende derzeit die Regionen aber Sie helfen nur, wenn man den code nicht, wenn der mit der Klasse.

War es hilfreich?

Lösung

Ich würde nicht Regionen Gruppengehalt in Ihre Dateien auf einer allgemeinen Basis empfehlen.

Wenn Ihre Datei wächst auf eine solche Größe, die Sie Sie gruppieren Dinge fühlen müssen die Kontrolle wiederzuerlangen, dann ist das ein Hinweis, sollten Sie versuchen, die Klasse in mehrere Klassen jeweils für eine Teilmenge von dem, was die ursprüngliche Klasse tat Refactoring, so dass Sie mit dem untestable Chaos nicht, dass die Gott Objekt

ist am Ende

Andere Tipps

Ich sehe keinen code, der Ihnen zeigt, wie die Umsetzung der Vorschläge, also werde ich Sie hier hinzufügen.Sie müssen den code knacken in Klassen basierend auf der Funktion.Dann fügen Sie den namespace-Schlüsselwort, um jede der Klassen, die Sie machen.Hier ist die MSDN-Artikel mit mehr Details (http://msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesp_topic3).Hier ist der Pseudo-code.Dann würden Sie verweisen Sie den code mithilfe projectname.namespace.classname.Methode.

namespace Customers
-Class GetData 
---GetCustomerObject() 
---GetCustomerFieldx()
end namespace

namespace Customers 
-Class Lists 
---GetSomeList() 
---GetAnotherList() 
end namespace

namespace Customers 
-Class Maintenance 
---AddCustomer() 
---DeleteCustomer() 
---UpdateCustomer()
end namespace 

Verwenden Sie Codebereiche in den Quelldateien. Dies gibt Ihnen Aufklappen / Zuklappen Tasten, so dass Sie Abschnitte der Datei verstecken können.

#Region "GetData"
    ... code ...
#End Region

#Region "Lists"
    ... code ...
#End Region

#Region "Maintenance"
    ... code ...
#End Region

Es scheint mir, dass die Kunden-Klasse zu viel zu tun sein kann und mit dem einheitlichen Prinzip Verantwortung einhalten werden muss abgebaut werden. Die Idee ist, dass eine Klasse weiß, wie eine Sache gut zu machen und Daten zu erhalten, ist eine andere Verantwortung mit Business-Logik auf der Durchführung dieser Daten. Ich werde zur Zeit durch den Lernprozess zu versuchen, meine monolithischen Klassen in kleiner, gezielt denjenigen zu brechen, damit ich nicht gute Ratschläge geben, wie dies zu tun, aber es gibt viele Ressourcen im Internet zur Verfügung:

Beispiel

Haben Sie ein bisschen ein Google für SOLID und Onkel Bob (Robert C. Martin) extra hinzugefügt Güte.

Region ist eine Lösung, die ich empfehlen. Sie können aber auch partielle Klassen verwenden.

Und denken Sie daran, wenn Sie die Klasse zu tun brechen in viele kleineren Klassen, haben Sie die Möglichkeit, sie in einem beliebig tiefen Namespace System zu platzieren. Der Project.Customer.Data Namespace konnte die GetCustomerObject und GetCustomerField Klassen beherbergen.

(So viel wie nichts, ich versuche, mich zu lehren, meine VB.NET Arbeit anzuwenden SOLID. Ist dies die Art von Sache, die Sie Implementierung gelandet?)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top