Ankündigung

Einklappen
Keine Ankündigung bisher.

Sinnvolle Programmstruktur

Einklappen

Neue Werbung 2019

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

  • Sinnvolle Programmstruktur

    Hallo Gemeinde,

    ich hätte gern einnen Tipp von Euch erfahrenen PHP-Programmierern. Ich bastle hin und wieder an einem recht umfangreichen Projekt zu UPNP, welches über IP-Symcon (ein Hausautomatisationssystem) realisiert wird.

    http://www.ip-symcon.de/forum/thread...PS-new-version

    Es sind derzeit zahlreiche einzelne Scripts, ähnlich Modulen, welche teils auch ineinander übergreifen. Dies brauchte ich, um den Überblick zu bewahren und mir ein umprogrammieren und testen zu vereinfachen. Häufig habe ich das auch über einen Include von anderen Scripts mit functions gelöst. Es sind auch eine 3-stellige Zahl an Variablen zu handeln.

    Nun bin ich am überarbeiten und habe an manchen stellen functions doppelt definiert und so dachte ich diese in einem weiteren Script zusammenzufassen und die eigentliche Logik nur in den Einzel-Scripts zu belassen.

    Ist das Eurer Erfahrung gemäß sinnvoll ?
    Stelle ich mir da vielleicht selbst ein Bein, wenn zum Aufrufen einer Function jedesmal ein 3000 Zeilen-Script und ein 1500 Zeilen-Script includiert wird (Performance ...) ?

    Ich bin für jeden Hinweis dankbar.

    Viele Grüße

    André

  • #2
    Also sobald Code doppelt vorkommt ist das schon ziemlich blöd. Das mit der mehrfachen includen kannst du durch include_once verhindern, dann wird der gewünschte Teil nur 1 mal includiert und nicht eventuell 100 mal.

    So wie sich das ließt, hört es sich so an als würdest du nicht Objektorientiert Programmieren, was in deinem Fall wohl höchst Sinnvoll wäre, vorallem bei diesem Umfang des Projektes.

    Ansonsten könntest du dir mal überlegen eventuell ein Framework zu benutzen.

    Soweit von meiner Seite, aber lass da lieber noch mal ein paar Erfahrerene kommentieren, ich bin auch noch "recht neu" (3 Jahre) in Sachen PHP .
    - Laravel

    Kommentar


    • #3
      welches über IP-Symcon (ein Hausautomatisationssystem) realisiert wird
      Also zu Hausautomation kannst du dir ja mal die gestarteteten Themen von diesem User anschauen, der war im Grund "nur" deswegen hier.

      Ev. gibts da auch Tipps die dir helfen können, was ich mich im groben erinnern kann waren die Code-Struktur ein großer Punkt der immer wieder vorkam, und die Suche nach minimalster "Performance"-Optimierungen.

      Und Redundanzen sind auf jeden Fall zu vermeiden - siehe D.R.Y. Prinzip.

      Ansonsten fällt mir noch ein im OOP Bereich das Autoloading ev. auch Frameworks etc.. aber dazu gibt es viele hier die besseres dazu sagen, gerade was große Applikationen betrifft.

      LG
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        [QUOTE=DigiHouse;812593]Ist das Eurer Erfahrung gemäß sinnvoll ?[/QUOTE

        Nein, das klingt irgendwie nicht sinnvoll, eher abenteuerlich. Es scheint das du die eigentliche Logik deiner Anwendung und Eingabe/Ausgabe "verwurschtelt" hast. Grade bei größeren Projekten wird das problematisch.
        Kann man sich den Code irgendwo ansehen ohne irgendwas "installieren" zu müssen?

        Zitat von DigiHouse Beitrag anzeigen
        Stelle ich mir da vielleicht selbst ein Bein, wenn zum Aufrufen einer Function jedesmal ein 3000 Zeilen-Script und ein 1500 Zeilen-Script includiert wird (Performance ...) ?
        Von der Performance her ist das kein Problem. Bei Webanwendungen ist es teils noch ein ganzes Stück mehr Code der pro Request verarbeit wird.

        Kommentar


        • #5
          Vielen Dank für die Antworten. Den kompletten Code kann man nur sinnvoll mit dem Hausautomtisationssystem IP -Symcon im Kontext sehen. Das fällt also weg. Aber ein Beispiel kann ich morgen mal online zeigen.

          Viele Grüße

          André

          Kommentar


          • #6
            Zitat von DigiHouse Beitrag anzeigen
            Den kompletten Code kann man nur sinnvoll mit dem Hausautomtisationssystem IP -Symcon im Kontext sehen. Das fällt also weg. Aber ein Beispiel kann ich morgen mal online zeigen.
            Was willst du uns dann zeigen? Die Oberfläche hat ja nicht mit der Programmstruktur zu tun.

            Zu den Fragen im Eingangspost:
            - Mehrere Scripts/Dateien sind nicht schlecht, sondern gut. Die Datei sollte eine Verantwortung haben, und nein "beinhaltet alle Funktionen" ist keine.
            - (Viele) includes sind kein Problem. Diese sollte aber nicht bei Funktionsaufruf explizit geschehen. Die notwendigen Dateien sollten bei Funktionsaufruf schon geladen sein. Du könntest auch Autoloading verwenden, wie schon vorgeschlagen wurde.
            - 3 stellige Anzahl an Variablen ist performancetechnisch kein Problem, wirkt aber seltsam. Sicher das du alle in dem selben Kontext brauchst?

            Grundsätzlich dürfte Performance bei dir nicht wirklich eine Rolle spielen. "Standard" PHP-Sachen wie Arrays, Includes oder Variablen werden vermutlich nie Probleme machen, so lange nicht wirklich exzessiv. Problematisch sind eher Dinge wie Dateizugriffe, Datenbankzugriffe, Web-APIs etc.

            Kommentar


            • #7
              Welche PHP Version nutzt die Hausautomatisierung denn ? Performance ist schon da der springende Punkt. Code Cache ( auf Bytecode Level ) ist gerade in den Umgebungen sehr sinnvoll.
              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

              Kommentar


              • #8
                1.) Stell deinen Projektcode doch mal auf Github, damit fällt es anderen auch leichter, etwas zu dem Code zu sagen
                2.) Stell überhaupt mal den Quelllcode zur Verfügung. Der Downloadlink im Verlinkten Thread scheint ein Installskript zu enthalten?

                Wenn ich die ganzen Funktionen in dem Skript mal überfliege, lese ich sehr oft global. Da die Funktionen irgendwie zusammen zu gehören (darauf deutet ja global hin), bietet sich hier natürlich die Nutzung von Klassen/Objekten an. Ich sehe außerdem viele Variablen die auch in einem gewissen Kontext zueinander zu stehen scheinen - auch die könnte man ja - zwecks besserer Übersicht - in einer Klasse gruppieren/wrappen.

                Kommentar


                • #9
                  Also der File-Source schreit förmlich nach einem sinnvollen Framework.
                  [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                  Kommentar

                  Lädt...
                  X