Seite 1 von 4

übersicht bei größerem project behalten?

Verfasst: 14.11.2006 01:41
von inti
hi@all,
bin nun bei purebasic seit fast 2jahren und haben nach vielen kleineren spielereien (meistens nur für mich) mal was größeres angefangen (spiel mit PB400) und stehe nun vor dem problem der verwaltung - folgenes problem:

ich arbeite mit vielen strukturen und proceduren die ich aufgrund der geschwindigkeiten nicht zusammenlegen kann weshalb sich nun am kopf meines projektes mehr als 30 einzelne proceduren tummeln! :( da einige proceduren auch wieder auf anderen zugreifen kann ich das ganze auch schlecht nach thema oder zweck ordnen - dachte eigentlich das proceduren global sind aber wenn ich aus einer procedure eine andere aufrufe die darunter steht so bekomme ich einen fehler!?!? weiterhin lassen sich die proceduren zwar falten aber dann funktioniert die suchfunktion nicht richtig!?!?

mich würde ganz einfach mal die erfahrungen der PB-user mit größeren projekten interessieren denn viele sachen die ich hier im forum gefunden habe sind doch eher "überschaubar".

Verfasst: 14.11.2006 02:01
von tobe
hi inti,

mit Declare kannst du dein proceduren sortierproblem lösen

Code: Alles auswählen

Declare b()
Procedure a()
  b()
EndProcedure
Procedure b()
  Debug 1
EndProcedure
a()

Verfasst: 14.11.2006 02:07
von ts-soft
Dazu kann man nur allgem. Tipps geben, je nach Projekttyp und Größe fällt
es immer etwas anders aus. Ich persönlich mag z.B. keine Declares, weil
ohne ist die Suchrichtung immer nach Oben :mrgreen:

Code: Alles auswählen

XIncludeFile "common.pbi"
; Enthält:
; Allgemeine Konstanten
; Allgemeine Structuren
; Prototypes
; Allgemeine Proceduren

XIncludeFile "intro.pbi"
; Enthält:
; Alles für das Intro, ohne obiges

; ....
; ....


Procedure Main()
  ; Ab hier alle Proceduren über dieser Schreiben, so sind die meisten Declares überflüssig
EndProcedure

Main() ; Programmstart
Globale Variablen vermeiden, richtig Kommentieren, und zwar das was
passiert, nicht wie der Code funktioniert.
Aussagekräftige Namen für Proceduren und Variablen usw.

Gruß
Thomas

Verfasst: 14.11.2006 03:08
von Kaeru Gaman
> wenn ich aus einer procedure eine andere aufrufe die darunter steht so bekomme ich einen fehler!?!?

yup. deswegen solltest du sie nicht nach thema oder alphabetisch, sondern logisch ordnen:
je weiter "innen" eine proc ist, desto weiter oben steht sie.

> am kopf meines projektes mehr als 30 einzelne proceduren tummeln!

nu, das is doch nich sooo viel. ;)
wenns zu unübersichtlich wird, kannst du in includes auslagern,
aber viel wichtiger ist, fette kommentare zu benutzen.
jede Procedure kann einen Kopf von 3-x kommentarzeilen haben.
lange sternchenketten helfen sehr bei der auffindbarkeit.
z.b.

Code: Alles auswählen

;**************************************************************************
;****
;**** P R O C E D U R E S
;****
;**************************************************************************

;*************************************
;**** Set Single Ball on Random Value
;*************************************

Procedure CreateBall(x.l, y.l)
  Ballz(x,y)\Phase  = Random(255)
  Ballz(x,y)\Type   = 1
  Ballz(x,y)\Color  = Random(32)
EndProcedure

;*************************************
;**** Prepare Complete BallField
;*************************************

Procedure PrepareField()
  Define x.l
  Define y.l
  For x=0 To 16
    For y=0 To 13
      CreateBall(x,y)
    Next
  Next
EndProcedure
das ist noch äußerst knapp kommentiert,
vorzugsweise gehört in den procedurekopf noch ein text,
was für argumente sie erwartet,
was sie tut, und was sie zurückliefert.

Verfasst: 14.11.2006 03:47
von inti
also includen, kommentare usw ist schon klar aber obwohl ich schon versuche strukturiert und überlegt zu schreiben wird das ganze bei langen bzw größeren sachen schnell unübersichtlich. wenn sich die proceduren einfach sortieren ließen wäre das ganze halb so wild, stellt sich (mir) die frage: hat das einen tieferen grund dass proceduren keine anderen proceduren aufrufen können die erst danach im code stehen? :?

hmm, also wenn ich statt proceduren ohne parameter einfach GOSUB verwenden würde hätte ich ich das problem der sortierung nicht mehr aber das wäre ja dann wieder schlechter coding-style, oder? /:->

Verfasst: 14.11.2006 08:17
von #NULL
Declare ist für dich der richtige weg. in dem beispiel hier geht es z.b. gar nicht anders, weil jede funktion die jeweils andere braucht. wenn du vor der definition deiner procs alle mit Declare deklarierst, kannst du sie anschließend ordnen wie du willst.

Code: Alles auswählen

Declare a( bool.l )
Declare b()


Procedure.l a( bool.l )
  If val
    ProcedureReturn b()
  Else
    ProcedureReturn 33
  EndIf
EndProcedure


Procedure.l b()
   ProcedureReturn a(#False)
EndProcedure



Debug a(#True)

Verfasst: 14.11.2006 08:21
von DrShrek
inti hat geschrieben:hat das einen tieferen grund dass proceduren keine anderen proceduren aufrufen können die erst danach im code stehen? :?
Du solltest Dir den

Code: Alles auswählen

Declare 
Befehl nochmal genauer ansehen.
Wurde in diesen Thread aber schon paarmal gesagt, also auch die Hilfe dazu lesen ;-)

Verfasst: 14.11.2006 15:35
von mk-soft
Ich Teile auch in verschiedene Include-dateien auf.
Global.pb, Strukturen.pb, Konstanten.pb, etc

Meistens erzeuge ich noch Log-Dateien wo Fehler und Infos ablege.

z.b.

Code: Alles auswählen

Global path_log.s

path_log = "MyProgramm.log"

Procedure WriteLog(text.s)

  temp.s = FormatDate("%yyyy.%mm.%dd %hh:%ii:%ss - ", Date())
  temp + text
  AddGadgetItem(#Listview_log, -1, temp)
  If OpenFile(0, path_log)
    FileSeek(Lof())
    WriteStringN(temp)
    CloseFile(0)
  EndIf
  
EndProcedure

Verfasst: 14.11.2006 16:26
von mknjc
Ich machs genauso wie mk-soft.
Vieleicht noch ein wenig übertriebener.

/Programm.pb ;Incude der dateien im include verzeichnis.

/include/Programm.pbi ;Die bestandteile des progs die nicht als Procedure vorleigen
/include/Konstanten.pbi ;Includes der Konstanten Dateien
/include/Prozeduren.pbi ;Includes der Prozeduren Dateien
/include/Variablen.pbi ;Includes der Variablen Dateien

/include/Konstanten/...
/include/Prozeduren/...
/include/Variablen/...

Für die Declare anweisungen hab ich ein Prog geschrieben das die automatisch in eine Declare datei einfügt.

@Kaeru Gaman
Kommentierst du immer auf englisch???
Man kanns auch übertreiben mit dem Englischwahn.
So ne tolle Sprache is das auch nicht.


Mkg mknjc

Verfasst: 14.11.2006 16:32
von edel
mknjc hat geschrieben: @Kaeru Gaman
Kommentierst du immer auf englisch???
Man kanns auch übertreiben mit dem Englischwahn.
So ne tolle Sprache is das auch nicht.
Das hat schon einen Sinn. Oft sitzen auch Leute aus anderen Laendern
an einem Projekt und fuer die wird es schwer sein deutsch zu lernen.
Wenn es nur fuer dich ist, ist es aber eher nebensaechlich welche
Sprache du nutzt.