Wie rückt ihr euren code ein?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Ofenrohr

Betreff: Wie rückt ihr euren code ein?

BeitragSa, Apr 02, 2005 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,

ich wollt mal fragen, ob ihr ein system bein einrücken von code verfolgt?

ich z.B. schreibe meinen code wie folgt:

zuerst kommt bei mir der header:
; Projektname

; by PetX - Productions

; dateiname.bb

als nächstes binde ich alle anderen dateien ein (include). der abstand zum header ist dabei drei freie zeilen.

nun kommen die types. wieder drei zeilen frei zu den inludes. zwischen den einzelnen types hab ich 2 leere zeilen. bei größeren projekten wird dieser teil in eine extra datei ausgelagert.

jetzt kommen globals. auch drei zeilen zu den types frei. die globals gruppiere ich je nach sinn. außerdem stehen hier die dims. bei größeren projekten wird dieser teil in eine extra datei ausgelagert.

nun kommt die mainloop. ich habe hier drei freie zeilen zu den globals. nach jedem while, for, repeat, if und select schreibe ich einen tab. also so:

Code: [AUSKLAPPEN]

if true = false then

     befehl_1()
     
     for i = 1 to 10
         
          befehl2()

     next

endif


zuletzt kommen bei mir die funktionen. diese werden aber sehr oft bei mir gleich in mehrere dateien ausgelagert. wenn nicht, dann haben sie drei freie zeilen zwischen sich und der mainloop.

wenn ich teile in dateien auslagere sorge ich dafür, das sie nie größer als ca. 300 zeilen werden.

wie teilt ihr euren code ein?

mfg ofenrohr
Ofenrohr.net

simi

BeitragSa, Apr 02, 2005 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, bei mit gibt alles immer ein kleines Durcheinander....

Zuerst kommen alle Variablen, Types, Dims, dann die Hauptschleife, und dann die Funktionen....

Habe aber nicht so ein tolles System mit Abstandzeilen.... Wink
 

Timo

BeitragSo, Apr 03, 2005 9:50
Antworten mit Zitat
Benutzer-Profile anzeigen
ungefähr so: Very Happy

BlitzBasic: [AUSKLAPPEN]

Const HALLO = 5 ;Konstaten immer groß geschrieben
Const ..
Const ...

Global gw = 800,gh = 600
Global mx,my
Global
Global

Dim
Dim
Dim

Include \"sonstwas.bb\"
Include \"........bb\"
Include \".....bb\"

Graphics gw,gh,32,2
SetBuffer BackBuffer()

Type tWasweisich ; <-- types aber immer mit einem t makiert
Field bla
End Type

Local ShowMenu = True
Local InGame = False

Repeat ; <--- in Schleifen, etc. immer Zwei leerzeilen weiter einrücken
Cls
If ShowMenu Then
;Menu
Else
;Spiel
EndIf
Flip
Forever

Function blabla()
End Function

Function ...
...
....

Ofenrohr

BeitragSo, Apr 03, 2005 9:58
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für die antworten.

wollte das mal wissen, weil ich vor einiger zeit mal einen code gesehen hab, den ich nicht lesen konnte, weil er nicht eigerückt war... die hölle Wink
Ofenrohr.net

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Apr 03, 2005 10:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Am Anfang Const Dim und Globale
Das immer in Paketen die zusammenhängend sind. Beispiel alles was zu TileMap gehört in ein Block.
Fast alles setzte ich in Functionen, dann läst sich später das Menue relativ einfach erstellen!

beim Coden achte ich nicht auf Einrückungen,
wenn es anfängt zu unübersichtlich zu werden dann kopiere ich die Function in den CodeFormer und der erledigt das automatisch!
[BB2D | BB3D | BB+]

Ofenrohr

BeitragSo, Apr 03, 2005 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
hab mir deinen codeformer mal besort...

find den echt gut...

mfg ofenrohr
Ofenrohr.net

Bfox

BeitragSo, Apr 03, 2005 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir mal den Source von meinem Game an: Klick mich
Glauben ist Mangel an Wissen!

Firstdeathmaker

BeitragSo, Apr 03, 2005 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich mache es generell verschieden. Was ich jedoch immer mache: Code einrücken, schon beim schreiben. Dadurch kann man kleine Fehler (fehlendes Endif z.B.) sehr schnell finden und das ganze bleibt logisch übersichtlich. Zudem schriebe ich mir kleine Anmerkungen für mich dazu. Am Anfang definiere ich alle globalen und Typen sowie Dims, dabei gehe ich aber eher durcheinander vor, d.h. ich packe die verschiedenen Variablen nach Programmlogischen Aspekten zusamme. So kann es vorkommen dass ich erst ein Typefeld für Planeten definiere, direkt danach ein Dim Feld für den schnellen Zugriff auf die Planeten u.s.w.


Typischer kleiner Code von mir:

BlitzBasic: [AUSKLAPPEN]
;Punkteturnierersteller by Christian Geißler


Type player
Field name$
Field ID
End Type

Dim playerIDs(0)

Type Spiel
Field erster.player
Field zweiter.player
End Type


;Turnierteilnehmer einlesen
Global playeranzahl=0
tmp_stream=ReadFile(\"Teilnehmer.txt\")
While Not Eof(tmp_stream)
playeranzahl=playeranzahl+1
player.player=New player
player\name$=ReadLine(tmp_stream)
player\ID=playeranzahl
Wend
CloseFile tmp_stream

Dim playerIDs(playeranzahl)

i=0
For player.player=Each player
i=i+1
playerIDs(i)=Handle(player)
Next

anz_spiele=0
;Turnierspiele festlegen
For p1.player=Each player
For p2.player=Each player
existiert_nicht=1
For tmp.spiel=Each spiel
If tmp\erster.player=p2.player And tmp\zweiter=p1.player existiert_nicht=0
Next
If p1\name<>p2\name And existiert_nicht
Spiel.spiel=New spiel
spiel\erster.player=p1.player
spiel\zweiter.player=p2.player
Print p1\name+\" vs. \"+p2\name
anz_spiele=anz_spiele+1
EndIf
Next
Next

Print
Print \"Maximal mögliche Kombinationen: \"+anz_spiele
Print
anz_spiele=Input(\"Wieviele Spiele sollen stattfinden? \")

;Turnierspiele ausgeben
tmp_stream=WriteFile (\"Turnierplan.txt\")
spielcounter=0
For spiel.spiel=Each spiel
If spielcounter=anz_spiele Exit
spielcounter=spielcounter+1
WriteLine tmp_stream,\"Spiel Nummer \"+spielcounter
WriteLine tmp_stream,spiel\erster\name+\" VS. \"+spiel\zweiter\name
WriteLine tmp_stream,\"Status: Offen\"
WriteLine tmp_stream,\"Gewinner: \"
WriteLine tmp_stream,\"\"
WriteLine tmp_stream,\"\"
Next

WriteLine tmp_stream,\"\"
WriteLine tmp_stream,\"\"
For player.player=Each player
WriteLine tmp_stream,player\name+\" Punkte= 0\"
Next

CloseFile tmp_stream
End
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image
 

NetPad

BeitragSo, Apr 03, 2005 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
also am anfang kommt kurz eine beschreibung des programms(funktion, erstellungsdatum...)
danach kommen alle konstanten mit ev. komentaren zur besseren verständnis.

dann natürlich bei schleifen alles blockweise einrücken.

hauptsächlich geht es ja darum, den code so zu gestalten, dass alles das zusammengehört auch als gruppe erkennbar ist. wenn du den code nach 2 monaten noch ohne probleme nach einmal durchstöbern wieder verstehst ist es gut.

grs NP
 

LunaticCoder

BeitragSo, Apr 03, 2005 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Also generell rücke ich mit Tabstops ein die meist zw 3 und 5 Leerzeichen lang sind.

Bei Conditions oder Loops sieht das bei mir meist so aus:
BlitzBasic: [AUSKLAPPEN]

If bDead Then
; Kurze Beschreibung der Condition
MachWas(\"bestimmtes\")

End If


vor dem end if mache ich also immer eine leerzeile. das schafft etwas übersichtlichkeit und bläst den code nicht so auf wenn man auch die erste zeile leer lässt

Was die Nomenklatur von Variablen angeht folge ich soweit machbar der Ungarischen Notation weiche aber BlitzBasic-Bedingt davon ab.

prefix sz für einen string, b für boolean, l bzw i für Integers / Longs, t für types, functions bekommen bei mir f verpasst und globale variablen erhalten quasi als pre-prefix ein g. Constanten werden bei miri durchgehend großgeschrieben. da mman sie damit nciht durch groß-/kleinschreibung übersichtlich halten kann (z.B. szEinGanzLangerString) trenne ich sie mit dashes (unterstrichen - also PLAYER_IS_DEAD)

maximilian

BeitragSo, Apr 03, 2005 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, also Einrückung ist wohl bei jedem gleich. Deswegen komme ich mal zu dem Sonstigen:

Am Anfang kommt immer ein großer Kommentar, der Include-Dateiname, Anwendungsname und meinen Namen, sowie Versionsnummer und Datum enthält.
Alle Variablennamen etc. sind englisch, weil man so jedem seinen Code präsentieren kann und es kürzer ist. Auch bei mir sind Konstanten immer groß. Pointern gebe ich immer noch ein kleines Kürzel, wie z.B. "img_blubber".

Dazu bevorzuge ich den alten Schreibstil für Variablen- und Funktionsnamen. Also so: "create_particles" anstatt "CreateParticles".

LordChaos

PS: Wieso ist bei dem Print-Befehl mit "Maximal mögliche Kombinationen: "+anz_spiele bei Firstdeathmaker die Funktion weiß? Neutral
Variety is the spice of life. One day ignore people, next day annoy them.

Ofenrohr

BeitragSo, Apr 03, 2005 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
es freut mich so viele antworten zu hören.

@Bfox: ich glaub zwar nicht, das du deinen code immer so doll kommentierst, aber wenn, dann finde ich es wirklich überflüssig bei einer funktion wie create_gegner ranzuschreiben: ;diese funktion erstellt einen gegner... aber deinen code stil finde ich sonst ok.

@firstdeathmaker: deine Sortierung nach programmlogischen Aspekten finde ich gut. Ich persönlich unterteile lieber in gruppen, weil es dann einfacher ist include dateien zu schreiben.

@netpad: ich hab mal einen code geschrieben, der 11000 zeilen lang war. für den musste ich mir diesen code stil ausdenken, weil es sonst unmöglich ist da den überblick zu behalten. Wink

@LunaticCode: Die Ungarische Notation finde ich nicht so gut, da sie zu kompliziert ist. was allerdings nicht wichtig ist, weil bb eh nur 3 variablen typen hat (die types habe ich bewusst nicht mitgezählt.)

@LordChaos: die pointer kürzel benutze ich meistens auch. es sei denn der variablenname ist offensichtlich. ich bevorzuge ebenfalls den alten schreibstil.

mfg ofenrohr
Ofenrohr.net

Bfox

BeitragSo, Apr 03, 2005 18:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast recht! Laughing

Das war mein erstes Spiel, da hab ich zuviel kommentiert.

Bei meinem jetztigen Spiel ab ich überflüssiges weggellassen, trotzdem mach ich sicher noch zuviel Kommentare. Laughing
Glauben ist Mangel an Wissen!

Firstdeathmaker

BeitragSo, Apr 03, 2005 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei größeren Projekten benutze ich auch Präfixe um sinnvoll-logische Gruppen zu bilden. Z.B:

global SYS_GFX_X
global SYS_GFX_Y

global NET_SENDSTREAM
global NET_RECEIVESTREAM

Wenn die Variablen konstant bleiben (sie werden zwar nur global definiert und nicht mit const) wie z.B. Bildschirmauflösung oder der Sendestream dann schreibe ich sie komplett groß, das Präfix durch einen Unterstrich vom Rest getrennt. Normale globale dagegen schreibe ich am Anfag jeder "Silbe" groß: Game_Spielerpunkte. Wenn sie nur lokal bleiben schreibe ich sie komplett klein: tmp_counter, zs_string.

zs steht bei mir immer für zwischenspeicher, d.h. die Variable wird nur in der folgenden Schleife benutzt. tmp steht für temporär und bedeutet für meine notation dass die Variable nur temporär besteht, zum beispiel beim einmaligen Aufrufen aller Player-Typeeinträgen um irgendwas zu ändern würde ich tmp_player.player=each player schreiben.


Edit: Mein Informatiklehrer hat mein Bestreben, statt Turbo Pascall BB bei uns im Unterricht zu unterrichten mit dem Argument abgelehnt, dass man bei TP gezwungen wäre sauberer zu programmieren und es bei Basic zu Spaghetticode kommen würde. Ich denke da anders: BB ist zwar freier in der Strukturierung, allerdings kommt man ohne saubere Strukturierung doch auch nicht wirklich weit. Naja, jetzt durften wir mit TP unter Dos Vierecke malen... langweilig und kompliziert.
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Ofenrohr

BeitragSo, Apr 03, 2005 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
etwas, das ich auch bei meinem großen projekt gemacht hab ist folgendes: ich habe einfach die grupen in types getan. dies hat mir einiges leichter gemacht. das beste beispiel sind koordinaten. dann ist es fast wie bei deinen präfixen z.B.:

Code: [AUSKLAPPEN]

Type T2d_koor

  Field x%,y%

end type



global pos.T2d_koor = new T2d_koor



pos\x = 100
pos\y = 101


auf diese weise habe ich eine menge schreibkram gespart.

außer bei präfixen schreibe ich grundsätzlich klein.

ich kennzeichne zwischenspeicher meist mit ablage_
Ofenrohr.net

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group