Ankündigung

Einklappen
Keine Ankündigung bisher.

Best Practise für Programmerstellung

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

    [EibStudio] Best Practise für Programmerstellung

    Irgendwie bringe ich kein System in das Programm....

    Da ist einfach Kraut&Rüben durcheinander ohne Strukturierungsmöglichkeit - wie behaltet ihr denn die Übersicht?

    Der Code für die Elemente des Webservers zusammenfassen oder bei den Codeblöcken der jeweiligen Funktionen/Räume anordnen usw...

    Würde mich wirklich interessieren wie ihr das aufgebaut habt....

    "Nett" wäre natürlich eine Ordnerstruktur - aber da ist wahrscheinlich der Implementierungsaufwand zu hoch....

    Kann man (ich weiss: "Kann man" kann man immer mit JA beantworten ) die codezeilen zusammen mit den zugehörigen Webserver Zeilen in sep. libs packen und so einfach für jeden Raum eine makro-Datei anlegen?
    EPIX
    ...und möge der Saft mit euch sein...
    Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

    #2
    Zitat von EPIX Beitrag anzeigen
    Kann man (ich weiss: "Kann man" kann man immer mit JA beantworten ) die codezeilen zusammen mit den zugehörigen Webserver Zeilen in sep. libs packen und so einfach für jeden Raum eine makro-Datei anlegen?
    Du kannst mit separaten Dateien arbeiten und mit include einbinden.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Zitat von EPIX Beitrag anzeigen
      Irgendwie bringe ich kein System in das Programm....
      Hallo EPIX,
      das Problem hatte ich auch eine ganze Zeit lang, bis das ganze in der Tat nicht mehr wartbar, geschweige denn lesbar war.
      Gleich vorweg: Mit Includes arbeite ich gegenwärtig nicht, da ich befürchte, dass ich dann bei der Fehlersuche deutlich länger brauche...
      Habe irgendwann den Code dann so umgestellt, daß nur noch das nötigste im EIBPC-Code steht und habe das meiste in eigene Makros ausgelagert. Brachte eine Codereduktion von mehr als 50%! Im Moment habe ich etwas mehr als 1600 Zeilen im Code, davon wird das meiste für die Webserver-Seitendefinition, "// Kommentare",Variablendefinition und Makroaufrufe verwendet.
      Bei mir sieht das dann so aus (von oben nach unten):
      1. EIBPC-Section. Hat nur noch 12 Zeilen und enthält das nötigste (Startsektion,Emailbenachrichtigung beim Neustart)
      2. Variablendefinition (240 Zeilen). Hier habe ich allerdings schon angefangen gewisse Definitionen mit ";" hintereinander zu schreiben um den Scrollaufwand zu reduzieren
      3. WEBSERVER-Section. (600 Zeilen, ca. 40 Seiten). Hier sind alle Seiten (gut erkennbar mit den "// Kommentaren" untergebracht. Hier gibt es drei Kategorien (1.Zentrale Infos;2.Funktionale Infos (Beleuchtung,Strom,Temperatur...;3.Räume)
      4. LOCATION,MAIL-CONFIG,ETS-ESF,HTTPS,MacroLibs-Section. Habe also mitten in den Code die statischen Sektionen gepackt.
      5. Makro-Section (rund 800 Zeilen): Hier sind dann alle Makro-Aufrufe drinnen, d.h. eine Zeile pro Makro, geordnet nach Logik,Webserver-Seite.

      Vorteil an der Lösung m.E.: Deutlich schneller Editierbarkeit, bessere Gruppierung, leichtere Bearbeitung von "Updates" auf einzelne Codeteile (Makros).
      Nachteil: Durch das Auslagern des Codes auf die Makros ist die Fehlersuche bei Neuerstellung von Makros manchmal schwieriger, da ich das Code-Highlighting noch nicht hinbekommen habe. Aber damit kann ich leben.

      Zu den Makros: Habe alle Makros in einer eigenen Makrodatei, diese liegt im Makroverzeichnis bei den Enertex-Makros. Die Bezeichnungen der Makros habe ich so sprechend als möglich versucht zu wählen, inkl. einer Typnummer (1,2,3...) und einer Versionsnummer (a,b,c) und wie immer viele "// Kommentare". Durch die Typ- und Versionsnummer ist ein Update eines Makros Easy. Einfach per Copy das Makro verdoppeln und die Nummern hochzählen und einmal im EIBPC-Code eine Makroaufrufzeile hochzählen. Dann ist Fallback möglich und ein Update aller Makroaufrufe locker möglich...

      Ich hoffe das hilft Dir für die Ideensammlung.
      Viele Grüße, Oliver

      Kommentar


        #4
        Danke für die Anregungen...

        @Oliver
        Damit ich mir's besser vorstellen kann:
        Könntest du einen Screenshot (oder das Programmlisting auszugsweise!) reinstellen?
        Wäre wirklich nett....

        @enertegus
        Danke werde ich testen....
        EPIX
        ...und möge der Saft mit euch sein...
        Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

        Kommentar


          #5
          Hallo Epix,

          ich habe für mich folgendes aus der bisherigen Programmierug gelernt:

          - wiederholenden Code in Makro auslaggern (z.B. Button Web Server)
          - größere in sich geschlossene Code-Teile in Makro auslagern (z.B. Wärmepumpen-Gateway)
          - eifrig dokumentieren
          - strukturieren an Hands des u.g. Beispiels (xxx steht für meinen Code)

          Zu kleinteilige Auslaggerung führt im Fehlerfall oder beim Umbau zu unendlichem Suchen.

          Die Einführung der u.g. in Linien eingeschlossenen Überschriften hilft mir enorm die richtigen Code-Blöcke schnell zu finden.

          Viele Grüße

          Michael




          [InitGA]
          // Initialisierte Gruppenaddressen
          xxx


          [RS232]
          //
          // -----------------------------------------------------------------------------------------------------------
          // RS232-Konfiguration: Baudrate, Datenbits, Stoppbits, Parität, Flusssteuerung
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx


          [MacroLibs]
          //
          // -----------------------------------------------------------------------------------------------------------
          //Makro-Bibliotheken
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx


          [Macros]
          //
          // -----------------------------------------------------------------------------------------------------------
          // Google Wetterdaten
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // Statusabfrage Alpha Innotec Wärmepumpe
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // Raumtemperaturmessung über 1-Wire
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx


          [Location]
          //
          // -----------------------------------------------------------------------------------------------------------
          // Länge und Breite des Aufstellungsorts
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx


          [ETS-ESF]
          //
          // -----------------------------------------------------------------------------------------------------------
          // Die aus der ETS3 exportierte ESF-Datei
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx


          [MailConf]
          //
          // -----------------------------------------------------------------------------------------------------------
          // E-Mail Einstellungen
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          [WebServer]
          //
          // -----------------------------------------------------------------------------------------------------------
          // Webserver (WEB)
          // -----------------------------------------------------------------------------------------------------------
          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Statusseite
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Zentralfunkionen
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Erdgeschoß
          // ----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Obergeschoß
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          // -----------------------------------------------------------------------------------------------------------
          // WEB: Keller
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Außenanlage
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Temperaturverläufe Erdgeschoß
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Temperaturverläufe Obergeschoß
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Temperaturverläufe Keller
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Temperaturverläufe Wärmepumpe
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx


          [EibPC]
          //
          // -----------------------------------------------------------------------------------------------------------
          // Parameter definieren
          // -----------------------------------------------------------------------------------------------------------
          //
          // Web Pages
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // Globale Parameter und Funktionen
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Statusseite
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Zentralfunkionen
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Erdgeschoß
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Obergeschoß
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Keller
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Außenanlage
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Temperaturverläufe Erdgeschoß
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Temperaturverläufe Obergeschoß
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // WEB: Temperaturverläufe Keller
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          // -----------------------------------------------------------------------------------------------------------
          // WEB: Temperaturverläufe Wärmepumpe
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          // -----------------------------------------------------------------------------------------------------------
          // Alpha Innotec Wärmepumpe: Anlagenkennwerte per Email versenden
          // -----------------------------------------------------------------------------------------------------------
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // Alpha Innotec Wärmepumpe: Fehler per Email versenden
          // -----------------------------------------------------------------------------------------------------------
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // Außenbeleuchtung täglich zwischen Elevation -4° und -2° ein- bzw. ausschalten
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // Anwesenheitssimulation
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // Panikfunktion
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // Sonnenstandsabhängige Beschattung
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          //
          // -----------------------------------------------------------------------------------------------------------
          // Automatische Gartenbewässerung
          // -----------------------------------------------------------------------------------------------------------
          //
          xxx

          Kommentar


            #6
            Zitat von Jambala Beitrag anzeigen
            - wiederholenden Code in Makro auslagern (z.B. Button Web Server)
            - größere in sich geschlossene Code-Teile in Makro auslagern
            Hoi

            So ähnlich hab' ich das auch gemacht.
            Und statische Sachen hab' ich an's Ende verfrachtet (Definitonen und Variablen).
            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


              #7
              Dank' euch schön für die Anregungen!

              Nur noch eine (dumme) Frage: wenn man "Funktionsgruppen" in Makros auslagert, kann man auch den zugehörigen WEBSERVER Code Mit-auslagern?

              Es wäre dann alles zusammengehörende in einer Lib - oder ist das keine gute Idee?

              LG
              Erich
              EPIX
              ...und möge der Saft mit euch sein...
              Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

              Kommentar


                #8
                Moin Erich,
                bzgl. Webserver-Code: Die Codeteile der Webserver-Section (also der Seitenaufbau) lassen sich m.W. nach NICHT in ein Makro auslagern.
                Der (Action-)Code, was z.B. beim Drücken eines Buttons passieren soll, dagegen schon.
                Evtl. lässt sich aber die ganze Webserver-Section mittels include auslagern, allerdings darfst Du lt. Michael nicht eine Section in mehreren Includes haben!

                VG,
                Oliver

                Kommentar


                  #9
                  Danke OLiver-
                  die ganze Webserver-Section mittels include auslagern
                  auch eine Möglichkeit....

                  Mir geht es darum, dass ich diese endlosen Codewürste nicht mag, sondern lieber mehrere Files haben. Beim editieren kann man diese zB mit Notepad+ gleichzeitig offen halten und hat so die bearbeiteten Codestellen schnell (durch Fensteranklicken) zur Hand.

                  Danke auch an die Anderen!!
                  EPIX
                  ...und möge der Saft mit euch sein...
                  Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                  Kommentar


                    #10
                    Ein wahres Wort gelassen ausgesprochen

                    Zitat von EPIX Beitrag anzeigen
                    Mir geht es darum, dass ich diese endlosen Codewürste nicht mag, ...
                    Hoi

                    Geht mir genauso.
                    Aber wenn man länger nichts mehr an dem Programm gemacht hat, findet man sich mit ganzen Auslagerungen auch erst mal nicht gleich zurecht.
                    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


                      #11
                      Bei den Überschriften hilft auch noch, wenn man diese (mittels TAB) ungefähr rechtsbündig macht, dann fallen sie bein scrollen zwischen den Code-Zeilen besser auf.
                      Der schöne Niederrhein läßt Grüssen

                      Andreas


                      Alter Hof mit neuer Technik

                      Kommentar

                      Lädt...
                      X