Tutorial - Programmiertechniken

Hier kannst du häufig gestellte Fragen/Antworten und Tutorials lesen und schreiben.
va!n
Beiträge: 4
Registriert: 31.08.2006 02:52
Kontaktdaten:

Tutorial - Programmiertechniken

Beitrag von va!n »

PROGRAMMIERTECHNIKEN:

Ein gewisser Programmierstil ist notwendig, um sich selbst und u.a. auch anderen Programmierern das lesen des Sourcecodes nicht unnötig zu erschweren und um seinen eigenen Code auch nach langer Zeit ohne große Probleme zu verstehen. Außerdem zwingt man sich durch einen gewissen Stil selbst zum sauberen Programmieren.



Namensgebung - Die Regeln:
Bei der Vergabe von Variablenamen und Namen für Labels (Sprungmarken) sollten folgende Regeln beachtet werden:

- Namen können beliebig lang sein.
- Namen müssen mit einen Buchstaben (A...Z, a...z) oder einen Unterstrich ( _ ) beginnen.
- Namen dürfen nur alphanumerische Zeichen (Buchstaben und Zahlen) und Unterstriche enthalten.

Im übrigen wird bei Variablen- und Labelnamen die Groß- und Kleinschreibung berücksichtigt. Somit haben die Variablen "MeinTest" und "meintest" nichts miteinander zu tun.



Namensgebung - Der Stil:
Es gibt viele Methoden der Namensgebung von Variablen, Funktionen u.s.w., die das Programmieren erleichtern. Im folgenden werden einige Richtlinien genannt, die dazu dienen sollen, den Überblick zu behalten, wenn das Programm immer weiter anwächst und mehr Variablen, Labels und Proceduren verwendet. Zu Beachten ist auf jedenfall, daß man egal welches System man verwendet, konsequent bleibt. Bei der Sprache, die man für die Bezeichungen wählt, sei aber etwas gesagt. Wenn man z.B. evtl. Open-Source programmieren will, so bietet es sich meist eher an, englische Bezeichnungen und Dokumenationen zu verwenden. Ist man dagegen aber in einem Team von deutschsprachigen Entwicklern, so würde sich dann wohl die Muttersprache als bessere Wahl beweisen. Aber egal, für was man sich entscheidet - man muß nach der Entscheidung konsequent bleiben!

Ich will an dieser Stelle mal ein kleines Beispiel geben, wie man Variablen einfach und sinnvoll bezeichnen könnte:

- Jede Variable beginnt mit der Abkürzung Ihres Types. Als Beispiel: sString.s, lValue.l, dValue.d, bValue.b, qSize.q und so weiter!
Bei Pointers könnte dieses wie folgt aussehen: *pMemory
Bei Arrays würde einfach vor den Arrayname ein "a" für array gesetzt... Als Beispiel DIM aTable

- Bei jeder Variable oder auch andere Namen, die aus mehreren Einzelworten bestehen, könnte der Anfangsbuchstabe eines Wortes immer groß geschrieben
und der Rest klein geschrieben werden. Als Beispiel: lFixedCosts.l oder MyDrawBackground()

- Für Globale Variablen, könnte man immer ein kleines "g_" anfügen. Als Beispiel: g_hWindow



Namensvergebung - Häufige Probleme:
Der folgende Abschnitt beschreibt einige Probleme, die bei schlechter Namensvergabe auftreten können. Wenn irrtümlich auf eine noch nicht vereinbarte Variable zugegriffen wird (weil der falsche Name verwendet wurde), meldet der Compiler keinen Fehler, sondern legt eine neue Varibale an und initialisiert diese mit dem Wert 0. Diese Gefahr kann in PureBasic durch eine eiheitliche Namensvergabe und den Befehl "EnableExplicit" am Anfang des Programmes verringert bzw vermieden werden. Die Verwendung von langen Namen erhöht zwar die Lesbarkeit, birgt aber auch die Gefahr von vermehrten Tippfehlern.



Anmerkungen und Kommentare:
Im Gegensatz zu anderen Basic-Varianten werden in PureBasic Kommentare nicht durch die Anweisung von REM gekennzeichnet, sondern durch das Semikolon. Alles was hinter einem Semikolon bis zum Ende der Zeile folgt, wird als Kommentar betrachtet und vom Compiler ignoriert. Auf diese Weise können Programme dokumentiert werden.

Wenn alle Routinen entsprechend dokumentiert sind, können diese u.a. evtl. in zukünftigen Projekten weiterverwendet werden. Nichts ist so nervig und ärgerlich zugleich, wie eine früher einmal entwickelte Routine zu finden und raten zu müssen, was diese macht oder wie diese funktioniert. Obwohl es sich evtl. ein wenig übertrieben anhört, so sollte wirklich die Funktionsweise einer jeder Routine genau beschrieben werden, es lohnt sich.

Außerdem empfiehlt es sich, in einem Abschnitt am Anfang des Programms eine Dokumentation bzw einen Header einzufügen. Dieser sollte Copyright-Vermerke, eine Liste der vorgenommenen Änderungen (mit Datum) und Author evtl. enthalten. Desweiteren könnte man auch eine Beschreibung sämtlicher Variablen des Programs auflisten.



Techniken der strukturierten Programmierung:
Ein wesentliches Merkmal eines strukturierten Programmes ist die Einrückung von zusammenhängenden Programmabschnitten. Hierdurch wird schon optisch eine Struktur des Programmes erkennbar. Dies betrifft vor allem den Inhalt von Schleifen.



Modularisierung:
Eine Sorgfältige Konzeptplanung ist das wichtigste bei der Entwicklung von Software. Diese führt zu einer Zerlegung des Projektes in kleine Programmabschnitte - somit lassen sich albtraumartige unübersichtliche Sourcecodes vermeiden.

Nach der Entscheidung darüber, wie das Programm unterteilt werden soll, empfiehlt es sich, mit den schwierigsten Teil zu beginnnen und diese auszutesten, solange das Programm noch klein und überschaubar ist. Denn je größer das Programm ist, desto länger und schwieriger wird später die Fehlersuche. Hier ist es empfehlenswert, den in Frage kommenden Abschnitt aus dem Hauptprogramm herauszunehmen und in einem kleinen Testprogramm auszustesten oder den Programmabschnitt in eine Procedure zu packen, welche beim Aufruf entsprechende Werte zurückliefert.

Einige Dinge sollten bei der Entwicklung von Routinen beachtet werden:

- Eine Routine muß in allen möglichen Situationen fertig werden.
- Der Programmcode sollte effizient sein.
- Modularisierung, d.h. eine Routine kehrt immer dahin zurück, von wo aus sie aufgerufen wurde.
- Ausführliche Dokumentation.
- Besonders den Gebrauch von globalen Variablen und Feldern kommentieren und kennzeichnen.
- Alle Routinen müssen "wasserdicht" sein, d.h. sie dürfen nicht abstürzen wenn sie mit den falschen Parametern aufgerufen werden.
- Programmabschnitte einrücken und die Zeilenlänge begrenzen, so daß der Code lesbar bleibt.



Lesbarkeit des Programms:
Die Lesbarkeit des Programmcodes ist der nächste Punkt auf der Prioritätsliste bei der Programmierung. Die wesentlichste Punkt ist das Einrücken von geschachtelten Anweisungen und die Minimierung der Zeilenlänge.

Code: Alles auswählen

  For x = 0 To 640
    For y = 0 To 480 
      Plot(x, y)
    Next y
  Next x
Hierdurch wird es möglich, auf den ersten Blick zu sehen, welche Anweisungen innerhalb von welchen Block ausgeführt werden. Ebenso kann leicht ermittelt werden, ob für jedes "If" auch ein "EndIf", für jedes "For" auch ein "Next" oder für jedes "While" auch ein "Wend" vorhanden ist - indem einfach in der entsprechenden Spalte nach dem passenden Gegenstück gesucht wird.



Viel Spaß beim programmieren, wünscht Euch
Thorsten Will aka va!n



Tutorial (c) by Thorsten Will aka va!n
All rights reserved.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

:allright:
Aber einen kleinen Schönheitsfehler entdeckt, weil dies:
Im übrigen wird bei Variablen- und Labelnamen die Groß- und Kleinschreibung berücksichtigt. Somit haben die Variablen "MeinTest" und
"meintest" nichts miteinander zu tun.
gilt nicht in PureBasic (und in den meisten anderen Basic-Dialekten auch nicht).
Es wird nicht zwischen Groß- und Kleinschreibung in Variablennamen unterschieden!

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
#NULL
Beiträge: 2235
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

find' ich auch eine gute sache, va!n. :)

>> Namen können beliebig lang sein.
ich schätze aber mal, es werden nur eine begrenzte anzahl der zeichen wirklich zur identifizierung des bezeichners verwendet. wenn das in PB der fall sein sollte, weiß jemand wieviele das sind?
[ist zwar für anfänger nicht so wichtig, aber wenn man sowas schon anspricht...]
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> weiß jemand wieviele das sind?

also folgendes klappt noch:

Code: Alles auswählen

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1=1

Debug aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1
hier gibt's einen Assembler-Error:

Code: Alles auswählen

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1=1

Debug aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1
und hier schmiert mein Compiler ab:

Code: Alles auswählen

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1=1

Debug aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1
Also, ich finde das muss Fred unbedingt korrigieren! :mrgreen:

Grüße ... Kiffi
Hygge
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

Beitrag von winduff »

hrhr ausgerechnet du musstest das ja rausfinden :mrgreen:

Hätte ich betrunken vllt. noch gerade so hinbekommen :-p

Sauber :allright:
Bild
AND51 hat geschrieben:...und ich würde dein Programm aus Wut zwei mal installieren, um eines genüsslicher löschen zu können, als das andere...
va!n
Beiträge: 4
Registriert: 31.08.2006 02:52
Kontaktdaten:

Beitrag von va!n »

Danke für das gute Feedback. Die Sache mit der Groß-/Kleinschreibung ist mir zwar ein wenig peinlich... jedoch meine ich, mal bei einer älteren PB version ein solches Problem gehabt zu haben? (evtl. war es auch eine beta?) :oops: ;)
Namen können beliebig lang sein
naja, nicht ganz so ernst nehmen... ansonsten dürfte ein name - wenn beliebig lang - z.b. 512 MB lang sein :lol:
Antworten