Ankündigung

Einklappen
Keine Ankündigung bisher.

Professionelles Softwaredesign mit PHP erlernen (Buch-/Webtipp gesucht)

Einklappen

Neue Werbung 2019

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

  • Professionelles Softwaredesign mit PHP erlernen (Buch-/Webtipp gesucht)

    Hallo Community,

    immer wieder lese ich mit großem Interesse die Beiträge in diesem Forum, die über stumpfe prozedurale Programmierung und schlampigem Soft- und Datenbankdesign hinausgehen.

    Da ich immer wieder die Erfahrung gemacht habe das ich teilweise richtig große Projekte mit meinem Halbwissen aufgebaut habe und mich nach dem Aneignen weiterer Kenntnisse über den schlampigen Code von damals geärgert habe, möchte ich dem nun endgültig ein Ende bereiten und in die gehobene Liga aufsteigen.

    Die meisten PHP-Grundlagen kenne ich bereits - aber mit den oben genannten Kenntnissen haperts!

    Ich habe mittlerweile einiges aus den Beiträgen hier im Forum aufgeschnappt, zum Beispiel "PEAR", ich kann damit aber noch nicht wirklich was anfangen geschweige den das, was da hintersteckt, anwenden.


    Ich hoffe nun hier aus dem Forum ein wenig Hilfestellung zubekommen, und bräuchte Tipps zu Webseiten oder Büchern die mir dieses Wissen vermitteln.

    Hier mal ein paar (aber wirklich nur einige) der Fragen, die ich für mich klären möchte:
    • Wie baue ich das Dateisystem auf?
    • Was muss man alles bei der OOP beachten, bzw. wie arbeite ich RICHTIG damit.
    • Wie genau sieht gutes Software Design aus/Was zeichnet gute Websoftware aus?
    • Die Normalformen des Datenbankdesign verständlich erklärt (1-9).
    • Welche Mittel/Hilfsmittel stellt mir PHP für gutes Softwaredesign zur Verfügung.
    • Was macht (guten | gut kommentierten) Code aus? (Gibt es da einen Standart, an die man sich halten kann?)


    Ich danke euch schon einmal im Forum, und hoffe das ich mit meinem Anliegen hier richtig bin.

    Liebe Grüße:
    jw-lighting

  • #2
    Zitat von jw-lighting Beitrag anzeigen
    • Was macht (guten | gut kommentierten) Code aus? (Gibt es da einen Standart, an die man sich halten kann?)
    Also ich halte mich an die Java Code Convention.
    Macht finde ich einen nicht zu unterschätzenden Teil von 'guter' Programmierung aus.
    Oder?

    Kommentar


    • #3
      Zitat von jw-lighting Beitrag anzeigen
      • Wie baue ich das Dateisystem auf?
      Den perfekten Weg gibt es hier wohl nicht ?
      Schau dir doch vielleicht mal die Strukturen verschiedener Frameworks an:
      -> Zend Framework: Zend Framework: Documentation
      -> Symfony: The Definitive Guide to symfony | Chapter 19 - Mastering Symfony's Configuration Files | symfony | Web PHP Framework
      -> ...

      Zitat von jw-lighting Beitrag anzeigen
      • Welche Mittel/Hilfsmittel stellt mir PHP für gutes Softwaredesign zur Verfügung.
      Unittests, Softwaremetriken, Tools zur Überprüfung von Codingstandards, ...
      -> PHP Depend - Software Metrics for PHP
      -> SimpleTest - Unit Testing for PHP
      -> PHPUnit
      -> PHP_CodeSniffer
      -> sebastianbergmann's phpcpd at master - GitHub
      -> PHPMD - PHP Mess Detector
      -> siehe auch: Quality Assurance Tools for PHP - Sebastian Bergmann
      -> ...

      Zitat von jw-lighting Beitrag anzeigen
      • Was macht (guten | gut kommentierten) Code aus? (Gibt es da einen Standart, an die man sich halten kann?)
      PHPDoc-Kommentierung um damit z.b. auch api-Dokus durch doxygen oder phpdocumentator zu erstellen.
      [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
      | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

      Kommentar


      • #4
        Ich danke euch jetzt schonmal für eure Beiträge, und verspreche euch hoch und heilig mir eure Links in den nächsten tagen mal genauer anzusehen, da die Zeit momentan nur für ein kurzes Überfliegen reicht.


        Über weitere Antworten freue ich mich schon

        EDIT: das habe ich gerade noch über ein anderes Thema hier im Board gefunden: http://php-coding-standard.de/php_coding_standard.php

        Kommentar


        • #5
          Du solltest dich auf jeden Fall stark mit Software-Entwicklung beschäftigen. Je nach Größe und benötigter Flexibilität deiner Idee brauchst du Kenntnisse in OOP, Design Patterns. Wenn du das in einem Team machen willst solltest du dich auch noch mit Entwicklungsprozessen auseinander setzen. Vielleicht interessiert dich auch Agile Software-Entwicklung.

          Was macht gute Software aus? Lesbarkeit, denn Code wird öfter gelesen als geschrieben. Zudem flexibel bzw. robust zu gewünschten späteren Änderungen. Die Entwicklung ist nicht das aufwändigste an Software, die Instandhaltung und Erweiterung kann sehr viel kostspieliger werden!

          Bücher: Entwurfsmuster ("Das GoF Buch"), Patterns auf Enterprise Application Architecture, Implementation Patterns, und evtl. Test-Driven-Development, wobei du nebenher den Umgang mit xUnit lernst.

          Ich hab immer Sommer freizeitlich mit Entwurfsmuster angefangen und nun hole ich mir ein Buch nach dem anderen aus der Uni-Bib. Leider bleibt nebenher noch wenig Zeit um wirklich zu programmieren. Mach dich darauf gefasst, dass du mit dem Schreiben noch eine ganze Weile warten musst wenn du es professionell machen willst!

          Kommentar


          • #6
            Vielen Dank Phoscur,

            ich werde mir deine Tipps mal genauer ansehen.
            Der Tipp mit der Uni-Bibliothek ist gut und auf jeden Fall sehr wertvoll

            Ich möchte nicht sofort nur noch "gute" Software schreiben, aber mich ebend in diesen Bereich reinarbeiten um irgendwann dort anzukommen. Das ich während dieser Lernphase auch weiter Code schreibe, werde ich nicht umgehen können.

            Kommentar


            • #7
              Da ich immer wieder die Erfahrung gemacht habe das ich teilweise richtig große Projekte mit meinem Halbwissen aufgebaut habe und mich nach dem Aneignen weiterer Kenntnisse über den schlampigen Code von damals geärgert habe
              Das wird wahrscheinlich auch immer so weitergehen, wenn auch nicht so extrem

              Vorteilhaft ist auch, sich beim Erlernen von Software-Design nicht nur an php zu ketten, sondern auch andere Richtungen einzuschlagen, aus denen man sich dann Inspirationen holen kann.

              Z. B. merke ich immer mehr, das php leider gewachsen und nicht geplant war und einem beim Umsetzen sauberer Programmierung immer wieder Steine in den Weg legt (unterschiedliche Rückgabewert-Typen bei strpos, fehlendes type-hinting, etc.).

              Kommentar


              • #8
                wo fehlt type-hinting ?

                PHP: Type Hinting - Manual
                Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

                Kommentar


                • #9
                  Schlaumeier Ich meine komplettes, d. h. auch bei atomaren Datentypen, nicht nur bei Arrays und Klassen, wobei das schon mal ein großer Schritt gewesen ist.

                  Kommentar


                  • #10
                    Schlaumeier
                    Danke Du Torfkopf

                    Wozu brauchst Du type-hinting ?

                    Es ist doch meist völlig schnurz welchen Typ
                    eine Variable hat, da sie bei Bedarf eh umgewandelt wird.
                    Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

                    Kommentar


                    • #11
                      Kriegt euch wieder ein, Bitte

                      @xn22:
                      Ich möchte demnächst mit Mikrocontrollerprgrammierung, also C/C++ anfangen, vielleicht hast du ja recht und es hilft mir

                      Kommentar


                      • #12
                        Danke Du Torfkopf
                        Danke für das Kompliment. Das zwinkernde Smiley hast Du aber schon gesehen?!

                        Es ist doch meist völlig schnurz welchen Typ
                        Das ist genau die richtige Einstellung, um nie über Murks hinaus hinaus zu kommen.

                        eine Variable hat, da sie bei Bedarf eh umgewandelt wird.
                        Stimmt - Es hat auch noch nie jemanden gegeben, der mal mal aus Versehen einen String mit einer 0 verglichen und sich dann gewundert hat, warum true raus kommt. Aber das hatten wir schon mal...

                        Ich möchte demnächst mit Mikrocontrollerprgrammierung, also C/C++ anfangen, vielleicht hast du ja recht und es hilft mir
                        Du hast nach professionellem Softwaredesign gefragt. Ob der richtige Weg ist, ein Vorgehen, dass sich über Dekaden hinweg bewährt hat, ins Lächerliche zu ziehen - Na wenn Du meinst..

                        Kommentar


                        • #13
                          Zitat von xm22 Beitrag anzeigen
                          Du hast nach professionellem Softwaredesign gefragt. Ob der richtige Weg ist, ein Vorgehen, dass sich über Dekaden hinweg bewährt hat, ins Lächerliche zu ziehen - Na wenn Du meinst..
                          Hmh darf ich fragen was du damit meinst? Klar µC Programmierung hat wenig mit der eigentlichen Softwareentwicklung gemein, bis auf dass sie halt evtl. in C geschrieben wird. Aber was das mit lächerlich zu tun hat erschließt sich mit gerade nicht, kann auch sein, dass ich etwas verpasst habe.

                          @jw:
                          Naja µC Softwareentwicklung ist wie ich oben gesagt schon sehr unterschiedlich zu der "normalen" Softwareentwicklung. Aber schaden kann es nie mal über den Tellerrand geschaut zu haben, auch wenn ich bei µC immer hasse wieviele Bits man hin und her schubsen muss und wieviele Initialisierungen man kennen muss etc. und wie oft man einfach nur bescheidene Binär Rechnungen auf dem Papier machen muss ^^

                          Kommentar


                          • #14
                            Entspannt euch, Jungs, sonst landet der Thread ganz schnell im Müll. In diesem Forum will ich keine Flamewars oder unsachliche Diskussionen sehen. Hier geht es um Konzepte und nicht um Kindergarten-Probleme.

                            Wozu brauchst Du type-hinting ?
                            Ganz einfach: OOP ist der Ansatz die Realität realitätsnah abzubilden und in der realen Welt ist auch nicht jeder ein Einheits-Mensch, der in der passenden Situation zum Super-Guru mutiert werden kann. Daher gibt es explizite Typen für die jeweiligen Anwendunsfälle.
                            Viele Grüße,
                            Dr.E.

                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            1. Think about software design [B]before[/B] you start to write code!
                            2. Discuss and review it together with [B]experts[/B]!
                            3. Choose [B]good[/B] tools (-> [URL="http://adventure-php-framework.org/Seite/088-Why-APF"]Adventure PHP Framework (APF)[/URL][URL="http://adventure-php-framework.org"][/URL])!
                            4. Write [I][B]clean and reusable[/B][/I] software only!
                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

                            Kommentar


                            • #15
                              Das ist genau die richtige Einstellung, um nie über Murks hinaus hinaus zu kommen.
                              klar - und alles was in Assembler programmiert ist, ist Murks,
                              weil es bei Assembler kein type-hinting gibt.

                              Stimmt - Es hat auch noch nie jemanden gegeben, der mal mal aus Versehen einen String mit einer 0 verglichen und sich dann gewundert hat, warum true raus kommt. Aber das hatten wir schon mal...
                              Daß man alles auf true, false prüft ist auch eine Angewohnheit aus anderen Programmiersprachen.

                              OOP ist der Ansatz die Realität realitätsnah abzubilden
                              das dacht ich auch mal ...
                              Mit einiger Verwunderung stell ich aber fest, daß fast alle Begriffe
                              aus der Wirtschaftswelt stammen:
                              da wimmelt es von Controllern, Managern, Dispatchern, Business und Farbriken.
                              Und nirgends jemand der arbeitet, außer ein paar Helpern und einem Model falls vorhanden.

                              Daher gibt es explizite Typen für die jeweiligen Anwendunsfälle
                              ist mir schon klar daß Arrays, Integers etc. für bestimmte Anwendungsfälle da sind.
                              Zumindest in der prozeduralen Programmierung weiß ich trotzdem nicht warum ich type-hinting brauchen sollte.

                              Ich hab eben den Eindruck daß manche C++, Java etc. für "richtige" Programmiersprachen halten und erwarten daß andere Programmiersprachen genauso oder zumindest ähnlich funktionieren müßten.
                              Da wird alles in functions gestopft, immer auf true/false geprüft und Konzepte die bei C++ vielleicht ihre Berechtigung haben 1 zu 1 auf PHP übertragen.
                              Und oft werden nicht mal die grundlegenden Dinge (Trennung Verarbeitung/Ausgabe, Sessions etc.) verstanden.

                              Jedenfalls ist mein Code kein Murks nur weil ich nicht in den Kategorien eines C-Programmierers denk.
                              Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

                              Kommentar

                              Lädt...
                              X