Ankündigung

Einklappen
Keine Ankündigung bisher.

Best Practice: Codestruktur

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Best Practice: Codestruktur

    Hallo zusammen,

    meine ersten Gehversuche mit dem EIBPc habe ich hinter mir, und die Code-Datei wächst und wächst....

    Wenn ich jetzt daran denke demnächst auch Webseiten zu realisieren, mach ich mir langsam Gedanken über die Übersichtlichkeit meines Codes.

    Aus anderen Sprachen ist man ja gewohnt Funktionen zu kapseln oder verschiedene Bibliotheken und Code-Dateien aufzubauen. Eine IDE unterstüzt einen dann zumeist noch schnell an die entsprechenden Kapselungen zu springen. Die Logik des Basic-Dialekts ist in dieser Hinsicht ja eher "basic" .

    Daher interessiert mich, wie ihr umfangreiche Projekte strukturiert und den Überblick über das Projekt behaltet. Dabei ist es ja wichtig die anzupassenden Codestellen zu finden, wenn man mal schnell eine Kleinigkeit ändern will.

    Hier also der Aufruf zum Posting von "Best Practices" in der Codestrukturierung: Gliedert ihr Code in Subdateien aus getrennt nach "Lichtsteuerung, Rolladen, Web" oder ähnliches. Packt ihr Logik analog zu Funktionen in Makros? Gibt es weitere Strukturierungselemente? Das Durchscrollen einer im länger werdenden zentralen Datei ist ja nicht so komfortabel.

    Ich bin gespannt auf Eure Lösungen.

    #2
    Hoi

    Ich hab' die Konstanten, Verlinkungen und sonstigen Unveränderlichen ganz nach unten / hinten gestellt.

    Davor die Macros und darüber die Webseiten.

    Und das woran ich gerade bastle ist an oberster Stelle.

    So Unterteilungen des Codes mit // --------------------
    sind ja aus früheren Spaghetti Konstrukten bekannt.
    Grüsse Bodo
    Fragen gehören ins Forum, und nicht in mein Postfach;
    EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

    Kommentar


      #3
      Zitat von kuczerek Beitrag anzeigen
      Hallo zusammen,
      Eine IDE unterstüzt einen dann zumeist noch schnell an die entsprechenden Kapselungen zu springen. Die Logik des Basic-Dialekts ist in dieser Hinsicht ja eher "basic" .
      An dieser Stelle steht auch schon einiges auf der Featureliste.
      Gliedert ihr Code in Subdateien aus getrennt nach "Lichtsteuerung, Rolladen, Web" oder ähnliches.
      Da ich seit V1.000 mit EibStudio arbeite und das damals gar nicht ging -noch nicht mal Makros gab es - , habe ich aus "historischen Gründen" (=Euphemismus für: Man ist zu faul, etwas komplett neu und damit gescheit zu machen) einen Monolithen geschaffen: Relativ unübersichtlich und ein gutes Beispiel, wie man es nicht machen sollte.
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar


        #4
        Zitat von enertegus Beitrag anzeigen
        An dieser Stelle steht auch schon einiges auf der Featureliste.
        OK, ich bin gespannt.

        Zitat von enertegus Beitrag anzeigen
        ...habe ich aus "historischen Gründen" ... einen Monolithen geschaffen: Relativ unübersichtlich und ein gutes Beispiel, wie man es nicht machen sollte.
        Aha, das ist ja ein spannendes Bekenntnis. Mal sehen ob ich das irgendwie verhindern kann.

        Kommentar


          #5
          Zitat von Bodo Beitrag anzeigen
          So Unterteilungen des Codes mit // --------------------
          sind ja aus früheren Spaghetti Konstrukten bekannt.
          OK, das mit den // -------------------- habe ich auch so ähnlich gebaut, nur das meine Variabeln oben stehen.

          Besonders übersichtlich finde ich das aber nicht, vor allem wenn der Code zunehmend umfangreicher wird. Dann ist man schnell mal "kilometerlang" am scrollen...

          Kommentar


            #6
            Moin,

            bei mir gibt es in der [EibPC]-Sektion erstmal allgemein gültiges, Konstanten für Flash, Webserver etc., danach die Einteilung nach Räumen. Da kommt alles rein was zu einem Raum gehört. Die Bereiche für den Raum sind dann noch einmal unterteilt nach den Webserver Seiten.

            Also z.B.

            Wohnzimmer
            - Logiken, allgemein gültiges, Feueralarm, Einbruch, Gasalarm etc.
            - Logik für Webseite Licht
            - Logik für Webseite Geräte
            - Logik für Webseite Heizung
            - Logik für Webseite sonstiges

            Das hat für mich den Vorteil, das ich später einen Raum komplett in eine Datei ausgliedern und von dort mit include in den Hauptcode einbinden kann.

            Gruß,
            Bernd

            Kommentar


              #7
              Ich habe zuerst den Webservercode.
              Den restlichen Code habe ich nach Funktionen, also z.B. Heizungssteuerung, Rollos, Szenen usw. unterteilt. In diesen Teilen habe ich dann wieder nach Räumen untergliedert.

              Habe so keine Probleme irgendwas zu finden auch wenn der Code nicht mehr der kleinste ist (10,9% Auslastung).

              Grüße,
              Felix

              Kommentar


                #8
                Zitat von enertegus Beitrag anzeigen
                ...habe ich aus "historischen Gründen" ... einen Monolithen geschaffen: Relativ unübersichtlich und ein gutes Beispiel, wie man es nicht machen sollte.
                Eine Verteilung über viele kleinere Dateien macht es auch nicht übersichtlicher. Es kommt viel mehr auf die IDE und den Editor an, ob man sich in umfangreicheren Projekten noch gut bewegen kann.
                Tessi

                Kommentar


                  #9
                  Zitat von Tessi Beitrag anzeigen
                  ...viele kleinere Dateien macht es auch nicht übersichtlicher. Es kommt viel mehr auf die IDE und den Editor an...
                  Wenn man die einzelnen Files als Registerkarten im EibStudio öffnen könnte fände ich dies schon ganz gut und auch übersichtlicher.
                  Gruß
                  Christian

                  Kommentar


                    #10
                    Zitat von chg Beitrag anzeigen
                    Wenn man die einzelnen Files als Registerkarten im EibStudio öffnen könnte fände ich dies schon ganz gut und auch übersichtlicher.
                    ich habe den Wink schon verstanden - der Zaunpfahl hat mich fast erschlagen...
                    Der Foldingeditor steht ja schon auf der Liste.
                    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                    Enertex Produkte kaufen

                    Kommentar


                      #11
                      , und
                      Gruß
                      Christian

                      Kommentar


                        #12
                        Zitat von chg Beitrag anzeigen
                        Wenn man die einzelnen Files als Registerkarten im EibStudio öffnen könnte fände ich dies schon ganz gut und auch übersichtlicher.
                        Dazu braucht man den Code aber nicht auf mehrere Dateien zu verteilen, das können manche Editoren auch mit den einzelnen Sektionen einer Datei machen, sie müssen dazu nur wissen, wie eine Sektion als solche erkannt werden kann. Und für EibPC-Programme sind Sektionen ja schon definiert.
                        Tessi

                        Kommentar


                          #13
                          Kann man durchaus auch so machen. Dann aber bitte ordentlich, komfortabel und performant in die IDE integriert. Ich möchte zwar nicht auf das Syntax highlighting verzichten, aber die Performance davon stört mich schon hin und wieder (3710 Zeilen ohne Web-Visu).

                          Einzelne Registerkarten/Dateien die man via #include zur Hauptdatei verknüpft ist imho eine der am einfachsten implementierbaren Lösungen mit mMn großem Nutzen.
                          Gruß
                          Christian

                          Kommentar


                            #14
                            Zitat von Tessi Beitrag anzeigen
                            Und für EibPC-Programme sind Sektionen ja schon definiert.
                            Ja, das stimmt schon. Aber die Sektionen gliedern die Funktionsbereiche des Codes ja nur sehr grob. Für eine Grundsätzliche Navigation sind sie nützlich, allerdings stelle ich mir auch eine "detailliertere" Navigation ähnlich eines direkten Anspringens von Methoden oder Funktionen in üblichen IDEs vor.

                            Der Vergleich hingt natürlich ein bißchen, da es Funktionen und Methoden natürlich nicht gibt. Im Grunde suche ich Ordungskriterien für Räume, Gewerke oder Funktionen. Ein Aufteilen in verschiedenen Dateien scheint mir da im Augenblick am sinnvollsten zu sein.

                            In dem Zusammenhang wären verschiedene Tabs im Editor mit den einzelnen Dateien auch nicht schlecht. Von daher zu Christians Beitrag:

                            Kommentar


                              #15
                              Zitat von kuczerek Beitrag anzeigen
                              Ja, das stimmt schon. Aber die Sektionen gliedern die Funktionsbereiche des Codes ja nur sehr grob.
                              Die vom Compiler genutzten/erwarteten/erkannten ja, mit definiert meinte ich aber allgemeiner das man beliebige Sektionen einrichten kann - das ist erlaubt, nur werden vom Compiler praktischerweise ihm unbekannte Sektionsnamen einfach ignoriert. IDE und Editor könnten damit aber generisch umgehen und sie einfach als Gliederungshinweis nutzen.

                              Zitat von kuczerek Beitrag anzeigen
                              Für eine Grundsätzliche Navigation sind sie nützlich, allerdings stelle ich mir auch eine "detailliertere" Navigation
                              Mit eigenen Sektionen geht das dann ja auch.

                              Zitat von kuczerek Beitrag anzeigen
                              ähnlich eines direkten Anspringens von Methoden oder Funktionen in üblichen IDEs vor.

                              Der Vergleich hingt natürlich ein bißchen, da es Funktionen und Methoden natürlich nicht gibt.
                              Eben. EibPC-Programme haben da nur sehr wenig Struktur an der sich die IDE orientieren könnte, da muß man schon mit entsprechenden Zusatzinformationen helfen - neben Sektionen könnten das auch Labels sein...

                              Zitat von kuczerek Beitrag anzeigen
                              Im Grunde suche ich Ordungskriterien für Räume, Gewerke oder Funktionen.
                              Wie gesagt, Du kannst eigene Sektionsnamen vergeben, der Compiler stört sich nicht daran und überliest sie einfach - derzeit gilt das leider auch für IDE/Editor, aber das kann sich ja noch ändern.

                              Zitat von kuczerek Beitrag anzeigen
                              Ein Aufteilen in verschiedenen Dateien scheint mir da im Augenblick am sinnvollsten zu sein.
                              Ob man den Code nun in verschiedenen Dateien oder verschiedenen Sektionen einer Datei einordnet, das ist am Ende egal solange die IDE mehr oder weniger gleichartig damit umgehen kann. Das häufiger die Aufteilung auf mehrere Dateien anzutreffen ist, ist historisch bedingt. Die früheren Recourcenbeschränkungen bei Rechnern erzwangen die häpchenweise Bearbeitung von Code, viele heute noch gebräuchliche Sprachen stammen aus dieser Zeit oder sind an alte Sprachen angelehnt. An dem Vorgehen hat man dann aus Kompatibilitätsgründen nichts mehr geändert. Erst in heutiger Zeit neu entwickelte Sprachen müssen sich aber nicht mit solchen Altlasten plagen und können andere Wege gehen.

                              Zitat von kuczerek Beitrag anzeigen
                              In dem Zusammenhang wären verschiedene Tabs im Editor mit den einzelnen Dateien auch nicht schlecht. Von daher zu Christians Beitrag:
                              Auch . Ich würde das dann gerne um die Fähigkeit erweitert sehen, auch einzelne Sektionen über Tabs zu separieren.

                              Dabei möchte ich noch einmal ausdrücklich betonen, das ich die Sektionen nicht statt mehrerer Dateien haben möchte, sondern zusätzlich, so das man die Wahl hat, ob man etwas nur logisch separieren möchte, oder auch "physikalisch". Ersteres dient "nur" der besseren Übersicht, letzteres auch der Wiederverwendbarkeit in anderen Projekten oder der Wietergabe an andere.
                              Sofern Code aber nur speziell für ein Projekt verwendet wird, würde ich es bevorzugen, diesen auch zukünftig in einer einzigen Datei zu haben und statt dessen mit oben genannten Alternativen Ordnung und Übersicht hineinzubringen.
                              Wie gesagt, es geht nicht um entweder oder sondern um sowohl als auch.
                              Mir ist klar das das einiges an Aufwand für Enertex bedeutet - aber was tut man nicht alles für zufriedene Kunden ...
                              Tessi

                              Kommentar

                              Lädt...
                              X