Jo, den Code strukturieren ist schon wichtig finde ich.
Weil ich immer so viel vergesse

und auch zeitweise ein Projekt liegen lassen muss, komme ich persönlich ohne gute Strukturierung nicht sehr weit.
Meine Projekte teile ich meist pro Fenster oder Funktionsgruppe in verschiedene Includes auf. Allgemeine Prozeduren, die in mehreren Fenstern aufgerufen werden, bekommen ein weiteres, eigenes Includefile.
Die Eventbehandlung versuche ich komplett vom PureForm Designer handlen zu lassen und inkludiere die erzeugte Datei einfach nur. Anpassungen daran versuche ich alle als code-injection in PureForm zu hinterlegen. Naja, den PureForm nutze ich erst kurz, von daher sind meine workflows dort selbst alle noch "beta".
Die einzelenen Prozeduren bekommen bei mir alle einen kurzen Header, damit man auch im zugeklappten Zustand sieht was sie tut, welche Argumente sie erwartet und welchen Wert sie zurückgibt.
Der main-Quellcode bekommt einen großzügigen Header, der alle wichtigen Daten enthält um auch nach 4 Monaten wieder in das Projekt einsteigen zu können. Und natürlich viele Kommentare im Code, ansonsten machste dich tot.
Darüber hinaus erstelle ich für ein größeres Projekt eine Projektbeschreibung, die die Programmfunktion, die geplanten Arbeitsschritte (Programmnutzung) und die grobe Umsetzung in PB beschreibt. Etwaige eigene Dateiformate für Datendateien, die erzeugt oder gelesen werden, sind ebenfalls in der Projektdoku beschrieben.
Hier mal ein Beispielheader für das mainfile:
Code: Alles auswählen
;*************************************************************************
;*
;* GiMeG - Gisi's Mencoder GUI
;* Grafisches Interface für den Video/Audio-Encoder "Mencoder"
;* (http://www.mplayerhq.hu)
;*
;*************************************************************************
;*
;* Title : GiMeG
;* Version : 0.01
;* Date : xx.xx.2007
;* Autor: : xxx
;* Programming lang. : Purebasic 4.10 beta3
;* -----------------------------------------------------------------------
;* BESCHREIBUNG:
;*
;* GiMeG ist ein Frontend für den Kommandozeilenorientierten Mediakonverter
;* "Mencoder" und hauptsächlich für die grafische Bedienung bzgl der Konvertierung
;* von Videos gedacht.
;*
[... usw... ]
;* -----------------------------------------------------------------------
;*
;* -----------------------------------------------------------------------
;* Historie:
;* 0.01 - xx.xx.07:
;* Erste Version
;*
;*
;*************************************************************************
So sehen die Header für Prozeduren aus:
Code: Alles auswählen
;*************************************************************************
;* Procedurename: Set_AusgabePfad()
;* Description : Hängt gedropte Filenamen an das Listview an
;* Arguments : -
;* Results : -
;*************************************************************************
Bei jedem Projekt versuche ich meine Strukturierung und die Kommentierung noch weiter zu verbessern.
Allerdings habe ich noch kein so grosses Projekt gehabt, daß da 40.000 Zeilen bei rauskommen.

Das größte Projekt (noch in Arbeit) hat mit allen Includes 52 KB Sourcecode und ist auf 8 Dateien verteilt.
Markus