Quellcode strukturieren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
voidstar
Beiträge: 4
Registriert: 20.03.2011 23:10

Re: Quellcode strukturieren

Beitrag von voidstar »

Ich kenne mich erst sehr wenig mit PureBasic aus, deswegen versuche ich ein paar allgemeine anstatt sprachbezogene Tipps zu geben.

Meinen Code versuche ich möglichst modular zu schreiben. Ich habe beispielsweise ein Modul "Vektor", in dem sich alle Funktionen, Strukturen usw. für Vektorrechnung befinden. Wenn irgendein anderes Modul nun Vektorrechnung benötigt, inkludiere ich dort einfach das Vektormodul. Genauer gesagt die Headerdatei des Vektormoduls, in dem sich die Strukturen, Funktionsprototypen und die ganzen anderen Sachen befinden, die von "Außen" verwendet werden dürfen. Alle Bezeichner eines Moduls versehe ich mit einem entsprechenden Präfix (hier: "Vektor_").

Diesen Aufbau finde ich praktisch, da dadurch nachvollziehbar festgelegt ist, wie die Module miteinander kommunizieren können und sollen. Ein Modul kann geändert werden, ohne dass andere Module daran angepasst werden müssen. Bugs lassen sich relativ einfach auf fehlerhafte In- oder Outputs bei den Modul-Schnittstellen zurückführen. Da die Module weitestgehend unabhängig voneinander sind, lässt sich der Code dadurch auch komfortabel in anderen Projekten wiederverwenden oder an Andere weitergeben.

Innerhalb eines Moduls halte ich normalerweise auch eine bestimmte Reihenfolge ein: Zuerst kommen die Includes, dann die Konstanten und Makros, dann die Strukturen, Variablen, Funktions-Prototypen und zum Schluss die Funktions-Implementationen. Die Implementationen fallen bei der Headerdatei weg.

Beim Schreiben von Prozeduren gehe ich sehr ähnlich vor. Mit Prozeduren wird Code wiederverwendbar, übersichtlich und einfacher zu warten. Wenn irgendwo im Programm etwas schief läuft, kann man oft schnell feststellen, ob eine Prozedur eine unerwartete Parameterübergabe erhalten hat oder einen falschen Rückgabewert liefert. Manchmal verwende ich Prodeduren auch zum "Getten" und "Setten" von Strukturmembern, aber das kommt auf den jeweiligen Fall an. Bei den Vektoren verwende ich beispielsweise keine, sondern ändere die Member (X und Y) direkt.

In der Regel finde ich es ratsam, nicht mehr globale Variablen zu verwenden, als nötig sind. Denn sobald globale Variablen ins Spiel kommen, reicht das Überprüfen des In- und Outputs einer Prozedur häufig nicht mehr aus, um die Ursache eines Bugs zu finden. Globale Variablen können schließlich überall geändert werden. Im schlimmsten Fall sitzt man vor einem unübersichtlichen Spaghetticode, dessen Programmfluss nur noch mit großem Aufwand nachvollzogen werden kann. Hier macht es ggf. Sinn, das Ändern einer globalen Variable nur über eine Prozedur zuzulassen. Unerwartete Zugriffe können auf diese Weise auch in der Prozedur erkannt und verhindert werden bzw. zu einer Fehlermeldung führen.

Vielleicht hilft dir das ja weiter, Renovatio.
Antworten