Projekt Design mit dem BCB
-
Hallo,
ich habe mal eine Frage. Diesmal nicht direkt zur Programmierung sondern eher zum Design/Aufbau eines BCB Projekts.
In Fächern/Büchern wie Software Engineering wird einem immer alles schön erklärt, meist gibt es aber nur einfache Ableitungsbeispiele aus der Natur etc. die jeder sofort erkennt.
Das Problem was ich habe, ist das ich nicht genau weiß wie ich die Klassen bei einem größeren BCB Projekt organisieren soll. Die IDE verleitet durch schnelles klicken die Methoden direkt zu implementieren. Bei vielen GUI Elementen und Interaktionen geht die Unit der MainForm schnell über 1000 Zeilen. Man könnte natürlich die Unit auf mehrere cpp Dateien splitten. Aber auch das ist nicht gerade das Wahre.Von daher, eher an die Leute gerichtet die auch beruflich größere Projekte erstellen, meine Frage: Wie ihr eure Projekte aufbaut (Klassendesign). Ich meine damit speziell alles was mit der GUI (VCL) zu tun hat. Z.B. wo packt ihr die implementierungen der ganzen MainMenues Methoden hin? Wie gliedert ihr es? etc. etc.
Vielleicht hat ja auch jemand ein Beispiel Projekt wo man sich sowas anschauen kann?
Vielen Dank,
Christian

-
Hallo
Das ist ein Problem was man nicht schnell und umfassend in ein paar Sätzen oder einem einzigen Beispiel erklären kann. Vor allem braucht man dazu Erfahrung und den Blick auf das Ziel des Projektes.
Auf jedenfall sollte das Model-View Konzept hilfreich sein. Es besagt die Logik und Datenhaltung von der GUI zu trennen. Lagere also so viel wie möglich aus den Form-Units (bzw. den Form-Klassen) aus. Gestalte diese Verwaltungsunits so GUI-unabhängig wie möglich, das beispielsweise dieser Teil des Quellcodes genauso gut in einem Konsolenprogramm verwendet werden kann. Definiere Interfaces die zwischen Logik und GUI vermitteln ohne das eines von beiden die Internas des anderen kennen muß. Auch die sogenannten Design Pattern helfen beim Klassendesign.
Letztendlich ist jedes Design stark vom Zweck abhängig. Einebis bald
akai
-
Am Aufbau der Formular-Klassen kann man recht wenig ändern (da sonst der Formulardesigner Probleme bekommt).
Man sollte aber generell GUI und Logik trennen, d.h. man implementiert für die Logik eigene Klassen und bindet diese dann in den entsprechenden Formularklassen ein, so daß z.B. ein Menüpunkt nur aus einem einfachen Aufruf einer Logik-Methode besteht (und nicht der komplette Code in OnMenuItemClick steht).
Dies reduziert dann die Zeilenanzahl erheblich (generell sollten einzelne Dateien nicht größer als 1000 max. 1500 Zeilen sein).
-
@Th:
Das heißt wenn ich ein MainMenue mit der Standardstruktur Datei, Bearbeiten, Extras etc... habe das ich für jeden Punkt eine Klasse erzeuge, dort meine Logikmethoden implementiere. Die Objekte erstelle ich dann private in meiner Form?
-
Hallo
Besser wäre es eine Zentrale Klasse zu haben die die benötigten Funktionen für das Hauptmenü anbietet.
Ziel ist ja nicht die Zerstückelung des Codes sondern eine sinnvole Gliederung.bis bald
akari