2009-04-02 6 views
1

Wir haben eine Menge Funktionen in unserer Anwendung, die sehr konkret als Modul beschrieben werden können. In der Regel gibt es eine Art Setupdialog, und wenn der Benutzer auf OK klickt, konfiguriert er einen Prozess zur Ausführung und führt diesen Prozess aus. Manchmal sind sie stärker beansprucht und der Benutzer wird den neuen Dialog öffnen und eine Weile an dem Dialog arbeiten und viele Dinge tun, die Änderungen an der zugrunde liegenden Datenbank vornehmen.Wie organisieren Sie Klassen in einem großen Projekt?

ich in der Regel mit mehreren Standardklassen am Ende

ConfigPanel.cs 
ConfigPanelData.cs 
ProcessRunner.cs 
ApiWrapper.cs (for calling the process from somewhere else) 

Wenn ich ein Ende hatte Modul beenden es WorkerPanel.cs WorkerData.cs SetupOptions.cs sein könnte (Panel Zustand verharrte zwischen den Läufen) Lib/WhateverBackendStuffINeedToSupportModule ApiWrapper

Im Moment gibt es Ordner für jeden:

UI/Panels/ 
    Module1Panel.cs 
    Module2Panel.cs 
UI/PanelData/ 
    Module1PanelData.cs 
    Module2PanelData.cs 
UI/PanelManagers 
    Module1PanelManager.cs 
    Module2PanelManager.cs 
Core/Module1/ 
    Module1.cs 
    Module1Helpers.cs 
Core/Module2/ 
    Module2.cs 
    Module2Helpers.cs 

Wie Sie sehen können, ist alles wirklich verteilt. Mit mehr als 50 Modulen sind diese Ordner nicht wirklich organisiert. Selbst wenn sie vom Subsystem getrennt werden, sind sie immer noch ein Durcheinander. Wäre es schlechtes Design, alles einfach zusammen zu stellen, so dass alles nach Funktion und nicht nach Klassenart getrennt ist?

Module1/ 
    Module1Panel.cs 
    Module1PanelData.cs 
    Module1PanelManager.cs 
    Module1PanelLib.cs 
    Module1PanelWrapper.cs 
Module2/ 
    Module2Panel.cs 
    Module2PanelData.cs 
    Module2PanelManager.cs 
    Module2PanelLib.cs 
    Module2PanelWrapper.cs 

Wie organisieren Sie Ihre Klassen und was sind die Vor-/Nachteile?

Antwort

0

Wäre es schlechtes Design sein nur alles zusammen so alles durch Funktion getrennt ist und nicht Klassentyp?

Es gibt keine allgemeine Regel, es hängt von der Situation, Ihren persönlichen Vorlieben und Änderungsmustern in Ihrem Code ab. Allerdings würde ich tun folgend vorschlagen:

  • Halten Sie so viel von dem gemeinsamen Code in dem Super jede Redundanz zu beseitigen. Vielleicht werden dann einige der Unterklassen nicht einmal benötigt.
  • Ich bin mir nicht sicher, was Sie mit "Module" meinen, aber ich würde empfehlen, die Sachen mit Namespaces + Unterverzeichnissen im selben Projekt zu trennen und nicht mit separaten Baugruppen. Verwenden Sie Assemblys nur für Deployment-Trennungszwecke und ähnliches.
  • Diese "Helfer" -Klassen, die Sie erwähnen, klingen ein bisschen code-smelly. Sie könnten eine Verletzung der OO-Prinzipien sein. Überprüfen Sie diesen Link für weitere Informationen: http://blogs.msdn.com/nickmalik/archive/2005/09/06/461404.aspx. Vielleicht können Sie den Code reorganisieren, den Bedarf für solche Klassen reduzieren UND gleichzeitig von einem saubereren OO-Design profitieren?
Verwandte Themen