Aktuelle Zeit: 23.07.2019 16:02

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Tutorial - Programmiertechniken
BeitragVerfasst: 31.08.2006 02:55 
Offline

Registriert: 31.08.2006 02:52
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:
  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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 31.08.2006 13:25 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
:allright:
Aber einen kleinen Schönheitsfehler entdeckt, weil dies:
Zitat:
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.70 | SpiderBasic 2.21 | Windows 10 Pro (x64) | Linux Mint 19.1 (x64)
"Die Jugend von heute mit ihren Ballerspielen, hocken nur in der Bude - wir haben früher die Leute noch draußen erschossen!"
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 31.08.2006 17:03 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 31.08.2006 17:25 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
> weiß jemand wieviele das sind?

also folgendes klappt noch:
Code:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1=1

Debug aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1


hier gibt's einen Assembler-Error:
Code:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1=1

Debug aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1


und hier schmiert mein Compiler ab:
Code:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1=1

Debug aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1


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

Grüße ... Kiffi

_________________
"A user interface is like a joke. If you have to explain it, it’s not that good." (Martin Leblanc)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 31.08.2006 17:35 
Offline
Benutzeravatar

Registriert: 10.02.2006 21:05
Wohnort: Gießen
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...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 12.09.2006 23:45 
Offline

Registriert: 31.08.2006 02:52
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: ;)

Zitat:
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:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye