Ankündigung

Einklappen
Keine Ankündigung bisher.

Coding Guidline bzw. Dateinamenkonfentionen - spezielle Fragen

Einklappen

Neue Werbung 2019

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

  • Coding Guidline bzw. Dateinamenkonfentionen - spezielle Fragen

    Servus,

    ich hab eine generelle Frage zum Thema Coding Guideline an euch.
    Schreibt ihr abstrakte Klassen u. Interfaces sowie Exception-Definitionen in eine seperate Datei? Und wenn ja wie benennt ihr diese?

    Ich frag mich ob folgendes Schema Sinn macht:
    MeinInterface.interface.php
    AbstractMeineKlasse.abstractclass.php
    MeineKlasse.class.php
    exceptions.php

  • #2
    Mit den Namen habe ich auch immer so meine Problem, zumal man bspw. bei Factory Patterns ja auch durchaus mehrere abstrakte Klassen hat. Meistens regele ich das über die Ordner. Für ein zusammengehöriges Modul - als Beispiel mal ein Frontcontroller - bspw.

    Code:
    frontcontroller/
        global.php              - globale Includedatei
      
        client/
          frontcontroller.php   - sozusagen der Client
      
        functions/
           ...
      
        request/
            abstract/
              interface.php
              abstract.php
        
            factory/
              interface.php
              http.php
              
            default/
              interface.php
              http.php
      
        response/
            abstract/
              interface.php
        
            factory/
              interface.php
              http.php
              
            default/
              interface.php
              http.php

    Kommentar


    • #3
      Naja da ich mich etwas auf 5.3 einschiesen möchte und Namespaces versuche mit einzubinden. Finde ich Ordner da eher unpassend da Ordner praktisch den Namespace darstellen das lässt sich dann besser per Autoload auflösen.
      Sinnvoller find ich da schon die Dateierwerterungen aber kann natürlich sein das ich mich dem Punkt täusche.

      Kommentar


      • #4
        Keine Ahnung. Das Optimum suche ich auch immer noch. Allerdings kann ich mir schwer vorstellen, sämtliche Abstracts, Interfaces und Klassen von Factories, Produkten, Clienten etc. in einem gemeinsamen Ordner zu halten und mich mit Monsternamen auseinanderzusetzen.

        Autoload ist ein gutes Argument. Aber damit hab ichs nicht so. Ich benutze lieber einen eigenen Modulloader.

        Kommentar


        • #5
          Ich benutze nur *.class.php, *.interface.php, *.func.php und *.inc.php sowie die index.php, pro Deklaration eine Datei, auch wenn es nur eine leere Exception-Ableitung ist. Letztlich kann man jede Datei in dieses Muster drücken. Exceptions sind ganz normale Klassen, damit ich die aber gesammelt in einem Ordner habe, nenne ich sie nicht UserException sondern Exception_User, also zu finden unter "Exception/User.class.php".
          Abstrakte Klasse heißen auch so: *_Abstract und sind demnach im */Abstract.class.php Ordner zu finden, so macht es Zend beispielsweise auch (nicht jedoch das Dateinamen Postfix).

          Letztlich werde ich wohl dazu übergehen, auch auf die Postfixe zu verzichten, weil ja jede Datei bis auf die index.php eine include-Datei ist und der Inhalt einer Datei schon allein durch ihren Speicherort definiert ist. Nicht wie früher wo vielleicht alles in einem "includes" Ordner lag. Ich sehe zumindest keinen Vorteil mehr. Damit kann man dann auch auf spl_autoload_extensions() verzichten.

          Kommentar


          • #6
            Zitat von Chriz Beitrag anzeigen
            pro Deklaration eine Datei, auch wenn es nur eine leere Exception-Ableitung ist. Letztlich kann man jede Datei in dieses Muster drücken. Exceptions sind ganz normale Klassen, damit ich die aber gesammelt in einem Ordner habe,
            na das is der Punkt warum für eine einfache
            Code:
            class IrgendwasException extends Exception {}
            eine komplett eigene Datei verschwenden? Was machst du wenn deine Klasse 20 verschieden Exceptions wirft?

            ---
            Zitat von Chriz Beitrag anzeigen
            nenne ich sie nicht UserException sondern Exception_User, also zu finden unter "Exception/User.class.php".
            Deshalb experimentiere ich mit PHP 5.3. schon rum Namespace sind in diesen Bezug eine sehr nette Sache.

            ---
            Zitat von Chriz Beitrag anzeigen
            Abstrakte Klasse heißen auch so: *_Abstract und sind demnach im */Abstract.class.php Ordner zu finden, so macht es Zend beispielsweise auch (nicht jedoch das Dateinamen Postfix).
            Hier könnten Namespaces auch wieder Abhilfe schaffen

            ---
            Zitat von Chriz Beitrag anzeigen
            Damit kann man dann auch auf spl_autoload_extensions() verzichten.
            Naja gerade das wird bei Namespace wieder interesant...

            Kommentar


            • #7
              Moment. Du redest hier ständig von Namespaces. Was nützt Dir das im Dateisystem? Du hast nach den Namenskonventionen der Files gefragt, nicht nach denen der Klassennamen.

              Kommentar


              • #8
                Zitat von nikosch Beitrag anzeigen
                Moment. Du redest hier ständig von Namespaces. Was nützt Dir das im Dateisystem? Du hast nach den Namenskonventionen der Files gefragt, nicht nach denen der Klassennamen.
                Jap durch Namespace fallen diese Underscore-Klassen-Namen praktisch weg, und anhand des Namespaces lässt sich wunderbar der Speicherort der Deklarationsdatei erkennen... vorausgesetzt mann hält sich wie bei Java daran das Namespace = Package bzw. Ordner ist.

                Kommentar


                • #9
                  Zitat von HStev Beitrag anzeigen
                  eine komplett eigene Datei verschwenden? Was machst du wenn deine Klasse 20 verschieden Exceptions wirft?
                  Das selbe, 20 Exceptions sind immernoch verteilt über 20 Dateien. Allerdings hab ich selten mehr als 5. Trotzdem seh ich darin jetzt keine Performancebremse, die meine Anwendungs spürbar verlangsamt.

                  Kommentar


                  • #10
                    Zerg, Du bist in letzter Zeit so oft hier. Alles in Ordnung?

                    Jap durch Namespace fallen diese Underscore-Klassen-Namen praktisch weg, und anhand des Namespaces lässt sich wunderbar der Speicherort der Deklarationsdatei erkennen... vorausgesetzt mann hält sich wie bei Java daran das Namespace = Package bzw. Ordner ist.
                    Joa, das ist allenfalls für Autoload relevant.

                    Kommentar


                    • #11
                      Zitat von nikosch Beitrag anzeigen
                      Joa, das ist allenfalls für Autoload relevant.
                      naja nicht nur, man muss sich keine Gedanken mehr über eindeutige Klassennamen machen...usw. das macht PHP endlich etwas reifer ... wenn dann jetzt noch mit PHP6 die Funktionsnamen und Parameterreihenfolge standardisiert werdern bin ich fast zufrieden.

                      Vor allen wird PHP durch Namespaces endlich problemlos erweiterbar, es lassen sich problemlos fremde libs einbinden ohne Namenskonflikte zu bekommen etc.

                      Ich nehmn du programmierst nur PHP bzw. nebenher keine Sprache wie C/C++ oder Java?

                      Kommentar


                      • #12
                        Stimmt schon.

                        Kommentar


                        • #13
                          Zitat von HStev Beitrag anzeigen
                          Was machst du wenn deine Klasse 20 verschieden Exceptions wirft?
                          meine exceptions sind sogar miteinander verbandelt

                          <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->eine komplett eigene Datei verschwenden?
                          exceptions sind außnahmen und als solche weißt du eben nie, welche denn eintrifft oder ob überhaupt eine eintrifft. du kannst sie also jetzt in eine eigene datei schieben und bei jeder popeligen exception schnell mal 100 - 200 kb parsen lassen, oder du nimmsts einzeln...

                          Kommentar

                          Lädt...
                          X