Programmierstil: Auslagerung von Funktionen
-
Hallo,
ich habe eine grundsätzliche Frage zum Thema "Guter Programmierstil".
Ich schreibe ein kleines konsolenbasiertes Verwaltungsprogramm. Ist es ratsam eine gesonderte Ein- und Ausgabefunktion zu erstellen, um bei Funktionen wie bspw. der Eingabe neuer Nutzer den Dialog von den entsprechenden Unterfunktionen durchführen zu lassen ?
Ich meine gehört zu haben, dass es dadurch einfacher wird im nachhinein z.B. auf eine grafische Oberfläche umzusteigen.
Den Nachteil den ich dabei sehe, ist jedoch, dass man in dem genannten Beispiel oft zwischen Ausgabefunktion <-> Neu_anlegen_Funktion <-> Eingabefunktion hin- und herspringen muss.
Ich wäre sehr dankbar, wenn man mir einen Tipp dazu geben könnte.
MfG. GFX
-
Es ist generell guter Programmierstil Logik und UI (Ein- und Ausgabe) voneinander zu trennen (d.h. in getrennten SourceCode-Dateien). Insbesondere solltest du keine Mischmasch-Funktionen erstellen.
Nur das Hauptprogramm (main) ruft dann die Funktionen aus beiden Modulen auf.Wie du schon geschrieben hast, kann man so die Logik-Funktionen dann auch in anderem Kontext (z.B. mit einer anderen GUI) verwenden oder sogar als DLL anbieten.
Und auch die Testbarkeit der einzelnen Module wird durch die Trennung erleichtert (da dadurch die Abhängigkeiten verringert werden).
-
Nur das Hauptprogramm (main) ruft dann die Funktionen aus beiden Modulen auf.
Wenn nur das main-Programm aufrufen sollte, müsste ich doch aber die ganze Logik dort umsetzen !?
Ich hätte jetzt z.B. main <-> menü <-> In/Out, wobei in der "Zwischenfunktion" menü dann die Steuerung und Auswertung des Dialogs stattfindet.
Eine solche Struktur ist also nicht ratsam ?
MfG. GFX
-
Jain,
das was du als "menü" bezeichnest, wäre für mich ein Teil der UI (also der Ein- und Ausgabe). Aber es stimmt, daß du einen Programmteil benötigst, der die Steuerung übernimmt (also der Aufruf der UI-Funktionen und das entsprechende Aufrufen der zugehörigen Logikfunktionen (z.B. CreateUser, DeleteUser, RenameUser, ...) - und das meinte ich mit "main" (ob du dieses noch in ein eigenes Modul namens "menü" auslagerst, ist natürlich deine Entscheidung).
Vllt. hilft dir auch der Wiki-Artikel Model View Controller (MVC), wobei dann für dich gilt:
Model = Logik
View = UI
Controller = Main (Menü)Oder aber UI und Logik strikt voneinander getrennt als Model View Presenter (MVP).