Große Projekte Schreiben

  • Hey Leute: mal ne frage:


    Wenn man ein Script schreibt, das mehrere TAUSEND-ZEILEN Lang ist, Wird es einfach irgendwann unübersichtlich...
    Wie macht ihr es, um es möglichst übersichtlich zuhalten..

    Beispiel


    Gui fenster 1 fertig programmiert...

    Programmablauf des fenster1 komplett...

    Gui Fenster 2 erstellt, Programmablauf Sehr komplex von fenster...

    ---> Möglichkeit 1: ich verschiebe den Programmcode nach unten des Programms, den ich fertig habe und die sachen, die zusammen gehöhren, wo ich gerade dran arbeite sind oben im Programm...

    --> Möglichkeit 2: ich erstelle eine *.au3, die ich dann Include, wo dann die ssachen drinne stehen, die schon fertig programmiert sind...

    ...

    Grund:
    man kann auch beim VisualStudio zb unterprogramme auswählen, um schneller und übersichtlicher zu programmieren...


    vielen dank für eure antworten...:) :rock:

  • Ich weiss nciht genau was du machen willst^^ Aber versuch mal mit Kommentaren zu trenne, ums übersichtlicher zu machen.


    kannst ja mit ;=========================================================
    oder so die abschnitte markieren.

  • jaa, das is richtig, aber ich finde, umso mehr zeilen ich schreibe, desto mehr muss man darum kämpfen, dass es nicht umübersichtlich wird...

    Oder geht es nur mich so...??

  • ich mach viel mit #Region, um die einzelnen Bereiche zu trennen.
    Diese kannst Du dann alle "zuklappen" mit View --> Toggle All Folds ...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Oh, das is ja wirklich gute tip, das hab ich noch nich gewusst...

    #Region -> der Code kann zugeklappt werden und wird trotzdem abgearbeitet...

    Sehr interessant...

  • ich hatte in meiner Anfangszeit auch versucht "fertigen Code" auszulagern und als include in das Script einzubinden.
    Hab aber mit den Variablen teilweise Probleme bekommen und trotzdem den Überblick verloren.

    Deshalb hab ich seitdem diese Möglichkeit genutzt.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • ja, genau deswegen...
    Aber das mit #region is wirklich nen guter tip!

    ...

    Include gibt ev. probleme mit Code... Wir auch irgendwie unübersichtlich...

    Noch irgendwelche Vorschläge...??

  • Hallo,

    mein aktuelles Großprojekt hat 4.272 Zeilen.
    Daran entwickele ich im Grunde schon seit über 2 Jahren. Alles ordentlich eingerückt und viel in Funktionen gepackt. An manchen stellen zur Orientierung ein Kommentar aber ansonsten ist es einfach die lange Zeit in der man das Script mehr oder weniger auswenig kennt.

    Das kannste in etwa mit deinem Wohnort vergleichen, wo Du vermutlich auch gut ohne Navi zurecht kommst :)

    Lg

  • was ist das für ein Projekt...?

    Also hast du nen system entwickelt, dass du die Funktionen so ordnest, dass ein bereich für Buttons, in der Kopfzeile die fenster und ganz oben der Main ablauf ist oder wie...?

  • Hallo!
    - Auch der 'UDF' Stile geht bei manchen Projekten gut (file1::Hauptprogramm -- file2::Grafikengine -- file3...) und alles includen.
    - Schön sauber ähnliche Funktionen beinander Packen und auch immer schliessen, sowie große Loops.
    - Gut planen mit den den Globalen und Lokalen Variablen; welche müssen jetzt wirklich 'Globalisiert' werden, und welche sin Local?!?
    - Bei vielen benötigten Globalen Variablen den 'Enum-Global' Stile für die Variablenerstellung verwenden:

    [autoit]

    Enum $_User32DLL, $_MainGUI, $_RenderGUI, $_LoadingProgress , _
    $_GUI_X, $_GUI_Y, $_GUI_PosX, $_GUI_PosY, _
    $_SomethingElse_Last
    Global $_SomethingElse[$_SomethingElse_Last]
    $_SomethingElse[$_User32DLL] = DllOpen("user32.dll")

    [/autoit]


    - Kann man Globale-Variablen gänzlich mit iniread und so ausgleichen?? Oder behersche ich mySQL???
    -> Gerade mit den letzten beiden Methoden kann man auch später noch immer gut in sein Programm eingreifen ;)

    Auch Arbeite ich mit 2 Kommentar-Systemen:

    [autoit]


    ; Blah blah, Blah blah blahbalba
    ; blahbalba Blah blah, Blah
    ; Standart Daten und Grössen
    $_MenuOpen = $_Menu_Settings[$_Menu_Settings_CheckOpen]
    $_MenuNr = $_Menu_Settings[$_Menu_Settings_Mode]-1
    $_OpenSizeX = $_MenuEngine_Menus[$_MenuNr][$_MenuEngine_OpenSizeX]
    $_OpenSizeY = $_MenuEngine_Menus[$_MenuNr][$_MenuEngine_OpenSizeY]
    $_RenderResX = $_SomethingElse[$_GUI_X]
    $_RenderResY = $_SomethingElse[$_GUI_Y]
    $_Menu_PosX = $_RenderResX - $_MenuOpen * $_OpenSizeX
    $_Menu_PosY = 0

    [/autoit][autoit][/autoit][autoit]

    $_TempSystem[$_TempSystem_Name] = $_Name ; System Name
    $_TempSystem[$_TempSystem_PosX] = $pos[0] ; PosX
    $_TempSystem[$_TempSystem_PosY] = $pos[1] ; PosY
    $_TempSystem[$_TempSystem_Nr] = $_System ; System NR
    $_TempSystem[$_TempSystem_SonneNr] = $_SunNr; Sonne NR

    [/autoit][autoit][/autoit][autoit][/autoit]


    Mit diesen Methoden versuch ich auch immer die Übersicht in meinen Projekten zu wahren.

    Grüsse!

  • Er meint, das der Entwickler sich eigentlich immer im eigenen Script zurechtfindet - er hat es ja geschrieben.
    Nur nach längerer Zeit wird das doch schwierig

    genau das meine ich.

    was ist das für ein Projekt...?

    Also hast du nen system entwickelt, dass du die Funktionen so ordnest, dass ein bereich für Buttons, in der Kopfzeile die fenster und ganz oben der Main ablauf ist oder wie...?

    es ist ne art 1-klick-tool um screenshots zu erstellen und hochzuladen.
    das ganze hat sich aus nem bedarf entwickelt, den ich ohne das tool manuell
    recht aufwendig mit verschiedenen programmen (paintshop, irfanview, watermark) machen musste.

    [Blockierte Grafik: http://s1.directupload.net/images/101008/hhpm7nmw.jpg]

  • jo, dat stimmt...

    'Enum-Global' Stile --> sehr gute art.... find ich sehr gut und übersichtlich.....!!!!!!!!!!!!!!

    danke für deine antwort Techmix!!!

    Alle antworten sind sehr geil...!

  • Bei vielen benötigten Globalen Variablen den 'Enum-Global' Stile für die Variablenerstellung verwenden:


    Sorry aber das ist höflich ausgedrückt "Quatsch".
    Enum sagt rein gar nix aus über den Geltungsbereich von Variablen.
    Wenn man, wie hier gezeigt, den Geltungsbereich nicht explizit angibt wird, wie immer bei AutoIt, in diesem Fall Dim verwendet.
    Die Variable wird dann kontextabhängig deklariert - in dem gezeigten Beispiel wird sie dann genauso zur globalen Variablen als hätte man sie ohne Enum deklariert und der angebliche Vorteil der Kapselung existiert weiterhin nicht. Als Effekt bleibt nur übrig das man noch eine globale Variable mehr hat (das Array) und das Skript unübersichtlicher wird da der eigentlich allein verwendbare Variablenname nun immer als Index eines Arrays verwendet werden muss.
    Sorry aber nehmt einen weiten Abstand von dieser "Methode" - da ist kein einziger Vorteil zu erkennen - die Variablen bleiben so oder so global.

    Zum eigentlichen Thema:
    So viel, wenn möglich und sinnvoll, Teilcode in Funktionen auslagern und in plausible Include-Dateien auslagern.

  • Wenn man die meisten Funktionen eines "richtigen" Editors kennt, ist die Größe des Quellcodes unerheblich!
    Die Codefaltung wurde ja schon angesprochen, schnelles Navigieren im Script geht mit den entsprechenden Funktionen. In Scite helfen z.B. die Funktionsliste (Alt+L) oder die Sprünge zu den Funktionen Ctrl+J zur Funktion (kann auch in einer includeten Datei sein! ) wobei Ctrl+Shift+J wieder zurück springt.

    "Fertige" Funktionen kann man natürlich in Includes auslagern! Was ich zu vermeiden versuche, ist die Deklaration von Variablen (ausser Globals) in diesen Dateien. Wenn man versucht, den Code möglichst in Funktionen zu packen, wird es einfacher. Nichts ist übler zu debuggen als 1800 zusammenhängende Zeilen.
    Ausserdem sind Funktionen schnell mal neu geschrieben/verbessert, ohne im Script 266 mal mit "Suchen/Ersetzen" die Zeit totzuschlagen.

    Das allerwichtigste meiner Meinung nach sind KOMMENTARE!
    Es soll zwar Leute geben, die nach 12 Jahren noch wissen, dass sie in Zeile 8473 mit den 3D-Arrays einen Workaround gebastelt hatten und das dann im handumdrehen fixen können, aber Leute diesen Kalibers sind dünn gesät und meist aufgrund ihres KnowHow´s unkündbar! Aber jeden anderen 08/15 Tastenklopper kann man durch einen ersetzen, der in der Lage ist, seinen Code auch ordentlich zu dokumentieren. Was übrigens auch recht oft gemacht wird...

    Zitat von trancexx

    And I must say that I was very disappointed seeing that even the writers of the code often lack understanding of it. It's kind of pathetic when you see some code used and when asking author what's this or that you get answer "I don't know". And if you ask for the code to be explained by words (any fucking human language) coders fail terribly. How can you write code if you can't explain it?!?

    ....dem ist nichts mehr hinzuzufügen....

  • Ich stimme Andy zu weil in meinem Projekt habe ich ein eingenes Protokoll entwickelt und ohne Kommentare währe ich total aufgeschmissen.
    Hier mal ein kleines Beispiel. Dies würde auf allen Rechnern das Internet Sperren

    FF01014B0009

    FF - Start Header
    Die nachfolgenden 4 Bytes sind Server Anweisungen
    In Kartei 01 ist die Funktion 01 die die nachfolgenden Daten an alle Rechner außer den Auftraggeber sendet.
    Die 4 ist die Länge der Daten nach dem B
    B ist ein Platzhalter
    4 Bytes Client Anweisungen
    00 - Steuerungs Kartei
    09 - Internet Sperren

  • AspirinJunkie:
    Mag sein das es vom Geltungsbereicht her 'Quatsch' ist, aber ich kann damit meine Programme echt übersichtlich gestalten! Und es ging ihm doch auch um die Übersicht.

    Es ist zwar anfangs etwas ungewohnt alles in einem Array zu knallen, aber ich erstelle mir so ein Enum-Global für jede grössere Funktion. Dadurch weiß ich immer schon auf dem ersten Blick mit welcher Variable ich Arbeite und vor allem wo sie herrkommt.
    Es macht wirklich einen Unterschied (für mich jedenfalls) ob ich jetzt 295 einzelne Variablen vor mir habe, die auch noch in der Bezeichnung irgendwann echt übel werden "was war denn jetzt noch '$_tag_High_12B'..." Da ist mir dann leiber eine Arraybezeichnung lieber '$_Engine[$_High-12B]' so weiß ich direkt auf den ersten Blick 'Ahh, diese ist eigentlich für die Engine...' Dieser Effekt tritt nämlich auf, wenn du gezwungen wirst im Urlaub ohne deinen Rechner zu fahren, und nach 3 Wochen kommste nach Hause und brauchst nochmal ne Woche um wieder so richtig in´s Projekt zu kommen... :D

    Aber wie gesagt es hat wohl jeder sein eigenes System entwickelt!

    Grüsse!