Wie anfangen? Zuerst GUI oder Funktionen?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
thminz
Beiträge: 84
Registriert: 25.05.2011 16:01
Computerausstattung: Windows XP, Intel Pentium 4 mit 3,2 Ghz, 2 GB RAM, 500 GB, ATI Radeon HD 4200
Wohnort: Köln

Wie anfangen? Zuerst GUI oder Funktionen?

Beitrag von thminz »

Moin! Wenn man ein neues Programm programmieren möchte wie fangt man den überhaupt an ? Weil ich noch nicht so viele Erfahrungen sammeln konnte weil ich hier noch frisch bin :D frage ich am besten nach was sinnvoller ist wie man am besten damit anfängt. Soll man zuerst das GUI erstellen oder zuerst die Programmfunktionen ? Oder vielleicht doch beide gleichzeitig ? Ich denke mal für jede Vorgehensweise gibt es seine Vor und Nachteile. :)


1. Zuerst GUI und dann Programmfunktionen programmieren:
Vorteil: Die Grundstruktur des Programms ist fest, also Menü, Gadgets etc und zu jedem Menüeintrag und Gadget kann sofort ohne Nachänderung eine Programmfunktion zugewiesen werden!


2. Zuerst Programmfunktionen und dann GUI programmieren:
Nachteil: Wenn ich GUI bezogene Funktionen erstelle dann brauche ich doch zuerst das GUI um meine Programmfunktionen zu den Gadgets zu zuweisen. Wenn ich zb eine LadeListe Funktion für ein Listicongadget schreibe dann wird ein Listicongadget vorher benötigt. Sonst kann ich ohne GUI überhaupt nicht testen!


3. GUI und Programmfunktionen gleichzeitig programmieren:
Nachteil: Wenn man ein paar GUI Elemente erstellt hat und nebenbei einige Programmfunktionen dann kann es doch bestimmt passieren das das GUI doch nicht so gut ist wie vorher gedacht. Dann ändert man sein GUI und die Programmfunktionen müssen anders verlegt werden weil zb ein Button nicht mehr gibt oder eine andere Gadgetnummer oder Gadgetkonstante hat und man muss für jede Änderung des GUI's anpassen. Das kann bestimmt mit viel Aufwand verbunden sein!


Andere Vor und Nachteile fielen mir nicht ein aber bestimmt kennt ihr alle Vor und Nachteile zu jeder Option. Was meint ihr? Wenn ihr eine bestimte Vorgehensweise besser oder am besten findet dann bitte auch mit Begründung! Danke! :)
Immer Aktuelle Purebasic Version!!
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Wie anfangen? Zuerst GUI oder Funktionen?

Beitrag von NicTheQuick »

Dafür gibt es dieses hübsche Design-Pattern: Model View Controller

Eigentlich sollte in Wiki alles gut ekrlärt sein. Aber hier die Kurzfassung:

Dein Programm sollte aus drei Teilen bestehen. Zunächst das Modell beinhaltet alle Daten des Programms und deren Datenstruktur. Der Controller kann dieser Daten verarbeiten und ändern. Und das View ist deine GUI. Sie greift lediglich nur noch auf die anzuzeigenden Daten zu bzw. sagt dem Controller, was er tun soll. Für die Verbindung zwischen GUI und Controller bietet sich zusätzlich noch das Command Pattern an.

Dies sind professionelle Arten, wie man so etwas macht und stark auf die Objektorientierung zugeschnitten. In PB ist es deshalb nicht so leicht umsetzbar. Aber das Prinzip dahinter sollte dir verdeutlichen, wie man es am besten macht. Also Logik, Daten und GUI strikt trennen und nur über einen kleinen Pfad miteinander verbinden. Viele kleine Verbindungen zwischen diesen drei Kernbereichen erschweren spätere Änderungen.
Benutzeravatar
Captn. Jinguji
Beiträge: 397
Registriert: 07.06.2005 19:47
Computerausstattung: PB 4.73x64, i7, WIN 10x64, ATI NVidia RTX 2070
Wohnort: Witten

Re: Wie anfangen? Zuerst GUI oder Funktionen?

Beitrag von Captn. Jinguji »

Im Prinzip hat NikTheQuick zwar kathedermässig recht, das gilt aber eher für Leute, die professionell Anwendungen am Fliessband schreiben, unterschlägt aber auch den wichtigsten Schritt (bzw. setzt den implizit voraus):
Eine saubere Spezifikation, was das Programm wirklich machen soll. Wenn man aus eigenem Antrieb -im Gegensatz zu : auf Auftrag - arbeitet, ist es ohnehin so, dass einem fortlaufend neue oder verbesserte Ideen kommen. Deswegen votiere ich auch immer dafür, sofort ein Releasekonzept zu machen, sich bei der Programmierung strikt daran zu halten und neue Ideen für's nächste Release nur aufzuschreiben; andernfalls endet man allzu "gerne" bei Programmen, die nicht mehr fertig werden, durch ihren breitbandig unfertigen Zustand zu gar nichts nütze sind und damit letztlich "ein Fall für den Mühlheimer" werden.

Das erste Release enthält dann nur die Grundfunktion, ist aber dadurch überschaubar und leicht stabil und "rund" zu machen. Dann macht es auch Spass, darauf aufzusetzen (mit einem Folgerelease), und wenn man dann mal ausgesprochenen Mist im Folgerelease programmiert hat, fällt man wenigstens wieder auf einen stabilen Ausgangsstand <> 0 zurück.

Unter DIESER Herangehensweise sehe ich die Simultanentwicklung von GUI und Funktionalität als sinnvoll an (muss aber jeder selbst wissen); allenfalls kann man ja Menüpunkte schon vorsehen und hinterlegt die, die Funktionalität aus Folgereleases aufrufen sollen, mit einer MessageBox "Wird später implementiert". BTW: Gnozals PureForm unterstützt dieser Vorgehensweise, weil es Tags im generierten Code unterbringt, die genau abgrenzen, wo durch eine nachträgliche CodeGenerierung wg. Hinzufügen weiterer Gadgets Code er- und eingesetzt wird und wo nicht.

Ach ja, das Aufschreiben derSpezifikation vorher stellt ja auch schon den Kern einer Dokumentation dar, die man, während man gerade wieder im "Entwicklerfieber" ist (oder gar danach) sowieso nicht mehr gern macht ("Wozu, ich werd' doch wohl wissen, was ich gerade gecoded habe" ... jaja, aber nach 2-3 Monaten Zwangspause kann das schon ganz anders aussehen)
Ist das Kunst hier, oder kann das weg ?
Antworten