Was haltet ihr von meinem Programmierstil?

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

  • Was haltet ihr von meinem Programmierstil?

    Hallo Community!

    Mir fällt auf, dass ich viele Objekte (für jeden Block) erzeuge und frage mich, ob sich das auf die Performance auswirkt. Andererseits finde ich es so genau richtig, da die Blöcke unabhängig voneinander arbeiten sollen und nicht im Vorfeld klar ist welche Objekte benötigt werden (könnte ich ja sonst oberhalb des Switch einmal erzeugen).

    Was haltet ihr davon SQL-Code als Parameter zu übergeben?

    Hier ein einfacher/abgespeckter Auszug meines Codes:
    PHP-Code:
    // Datei: admin/news/index.php
    switch ($_GET['action']) {
        default:
            
    $User = new User;
            
    $userId $User->getUserId();
                        
            if (
    $userId) {
                
    $News = new News();
                
    // Die News werden gefiltert durch direkte Eingabe von SQL, dirty? 
                
    $entries $News->getEntries("WHERE userId = $userId ORDER BY newstitle");
                if (! empty(
    $entries)) {
                    
    $Smarty = new Smarty;
                    
    $Smarty->assign("entries"$entries);
                    
    $Smarty->display("news/index.tpl");
                }
            }
            break;

        case 
    'addform':
            
    $User = new User;
            
    $userId $User->getUserId();
            
            
    // Hier muss der User überprüft werden (#2)
            
    if ($userId) {
                
    $Smarty = new Smarty;
                
    $Smarty->display("news/addform.tpl");
            }
            break;

        case 
    'test':
            
    // Hier wird nichts überprüft            
            
    $Smarty = new Smarty;
            
    $Smarty->display("test.tpl");
            break;

    Gruß
    carapau
    Lasst euch nicht lumpen, hoch den Humpen!

  • #2
    Re: Was haltet ihr von meinem Programmierstil?

    Original geschrieben von carapau
    frage mich, ob sich das auf die Performance auswirkt
    Das kommt auf die Objekte an, bzw. wie teuer deren Konstruktion ist.

    Zum Switch: Die Cases werden von oben nach unten geprüft und der default-Case ist sozusagen ein Fallback, der nur zum Zuge kommt, wenn kein anderer Case zutraf. Deswegen steht er eigentlich immer am Ende. Liest sich irgendwie logischer.
    Was passiert eigentlich, wenn if($userid) fehlschlägt? Gibst du dann gar nichts aus?
    Ich würde die Objekte übrigens vor dem Switch erzeugen. Der einzige Fall, wo du sie nacher nicht brauchst, ist ein Testfall. Der wird im Live-Betrieb wahrscheinlich nie ausgeführt.

    Was haltet ihr davon SQL-Code als Parameter zu übergeben?
    Passt schon. Es wäre zwar eleganter, diese Klausel in ein Object zu kapseln, aber wenn es dir primär um Performance geht und das SQL auch noch (quasi) statisch ist, kann man das durchaus so lassen.
    Zuletzt geändert von onemorenerd; 03.11.2008, 13:57.

    Kommentar


    • #3
      Normalerweise erstellst du dir deine applikationsweiten Objekte an einer anderen Stelle, so zum Beispiel dein Smarty-Objekt. Und innerhalb deines Konstrukts verwendest du die Instanz lediglich.

      Kommentar


      • #4
        smarty sollte aber z.B. in jedem Block verwendet werden, dann macht es keinen Sinn 3 Mal $smarty = new Smarty() zu schreiben... einmal drüber und gut, Unabhängigkeit hin oder her man kann es auch übertreiben...

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Re: Re: Was haltet ihr von meinem Programmierstil?

          Original geschrieben von onemorenerd
          Das kommt auf die Objekte an, bzw. wie teuer deren Konstruktion ist.

          Zum Switch: Die Cases werden von oben nach unten geprüft und der default-Case ist sozusagen ein Fallback, der nur zum Zuge kommt, wenn kein anderer Case zutraf. Deswegen steht er eigentlich immer am Ende. Liest sich irgendwie logischer.
          Was passiert eigentlich, wenn if($userid) fehlschlägt? Gibst du dann gar nichts aus?
          Ich würde die Objekte übrigens vor dem Switch erzeugen. Der einzige Fall, wo du sie nacher nicht brauchst, ist ein Testfall. Der wird im Live-Betrieb wahrscheinlich nie ausgeführt.

          Passt schon. Es wäre zwar eleganter, diese Klausel in ein Object zu kapseln, aber wenn es dir primär um Performance geht und das SQL auch noch (quasi) statisch ist, kann man das durchaus so lassen.
          Der Code ist abgespeckt, normal sind da ca. 10 Cases - weit aus komplexer!

          Den "default" als letztes setzen macht eigentlich Sinn. Wenn kein Parameter gesetzt wurde, wird der Default und somit die Übersicht aufgerufen. Die Übersicht erscheint prozentual viel häufiger, als die anderen Cases.

          Ich möchte die Klassen so schlank wie möglich halten, also sowas vermeiden:
          - getNewsByDate()
          - getNewsByTitle()
          - getNewsByAuthor($userId)

          Obwohl, das ist eigentlich der normale Weg, oder?

          Original geschrieben von onemorenerd
          Normalerweise erstellst du dir deine applikationsweiten Objekte an einer anderen Stelle, so zum Beispiel dein Smarty-Objekt. Und innerhalb deines Konstrukts verwendest du die Instanz lediglich.
          Jap, deshalb zweifel ich halt. Andererseits würden unbenötigte/überflüssige Objekte erzeugt werden.
          Lasst euch nicht lumpen, hoch den Humpen!

          Kommentar


          • #6
            Original geschrieben von ghostgambler
            smarty sollte aber z.B. in jedem Block verwendet werden, dann macht es keinen Sinn 3 Mal $smarty = new Smarty() zu schreiben... einmal drüber und gut, Unabhängigkeit hin oder her man kann es auch übertreiben...
            Da stimm ich dir zu! Objekte, die in JEDEM Block verwendet werden, können vor dem Switch erzeugt werden!
            Lasst euch nicht lumpen, hoch den Humpen!

            Kommentar


            • #7
              Da stimm ich dir zu! Objekte, die in JEDEM Block verwendet werden, können vor dem Switch erzeugt werden!
              Ich sag ja nix anderes

              Kommentar


              • #8
                Re: Re: Re: Was haltet ihr von meinem Programmierstil?

                Original geschrieben von carapau

                Ich möchte die Klassen so schlank wie möglich halten, also sowas vermeiden:
                - getNewsByDate()
                - getNewsByTitle()
                - getNewsByAuthor($userId)

                Obwohl, das ist eigentlich der normale Weg, oder?
                Es gibt in dem Sinne keinen "normalen Weg". Du möchtest deine Klassen simpel halten? Dann implementiere auch nur genau das, was du benötigst und du kannst dieses "Problem" abhaken
                Das bedeutet konkret: Benötigst du kein getNewsByDate, dann implementiere es nicht. Benötigst du kein getNewsByTitle, dann implementiere auch das nicht, und so weiter und so fort.

                Und wo wir gerade beim Programmierstil sind: Wieso verwendest du ohne Grund ein Mix aus Anführungszeichen und Hochkommas bei Strings? Bleib bei den Hochkommas, wenn du die Interpolation der Anführungszeichen nicht benötigst.

                Grüße
                Zuletzt geändert von Griecherus; 03.11.2008, 16:30.
                Nieder mit der Camel Case-Konvention

                Kommentar


                • #9
                  Re: Re: Re: Was haltet ihr von meinem Programmierstil?

                  Original geschrieben von carapau
                  Der Code ist abgespeckt, normal sind da ca. 10 Cases - weit aus komplexer!
                  ...
                  Ich möchte die Klassen so schlank wie möglich halten, also sowas vermeiden:
                  - getNewsByDate()
                  - getNewsByTitle()
                  - getNewsByAuthor($userId)
                  Hm, das riecht nach Adapter und Delegation.

                  Kommentar


                  • #10
                    Re: Re: Re: Was haltet ihr von meinem Programmierstil?

                    Original geschrieben von carapau
                    Ich möchte die Klassen so schlank wie möglich halten, also sowas vermeiden:
                    - getNewsByDate()
                    - getNewsByTitle()
                    - getNewsByAuthor($userId)

                    Obwohl, das ist eigentlich der normale Weg, oder?
                    Bei einem MVC erledigt das alles das Base Model. Man braucht dafür keine einzige Programmzeile schreiben. Nur mal als Beispiel.

                    Kommentar


                    • #11
                      - getNewsByDate()
                      - getNewsByTitle()
                      - getNewsByAuthor($userId)
                      Klingt nach Active Record.

                      Kommentar


                      • #12
                        Kenn ich als http://en.wikipedia.org/wiki/Data_Access_Object

                        Mit Filter und Listen-Factory genau das was da als Active Record beschrieben wird
                        [FONT="Helvetica"]twitter.com/unset[/FONT]

                        Shitstorm Podcast – Wöchentliches Auskotzen

                        Kommentar


                        • #13
                          Kenn ich als Data_Access_Object
                          Jep, gibt es mehrere sehr ähnliche Ansätze. Reicht im Grunde von Zend_Db_Table bis Doctrine.

                          Kommentar


                          • #14
                            Re: Re: Re: Re: Was haltet ihr von meinem Programmierstil?

                            Original geschrieben von Griecherus
                            Und wo wir gerade beim Programmierstil sind: Wieso verwendest du ohne Grund ein Mix aus Anführungszeichen und Hochkommas bei Strings? Bleib bei den Hochkommas, wenn du die Interpolation der Anführungszeichen nicht benötigst.

                            Grüße
                            Hast Recht, werde drauf achten!

                            Original geschrieben von h3ll
                            Bei einem MVC erledigt das alles das Base Model. Man braucht dafür keine einzige Programmzeile schreiben. Nur mal als Beispiel.
                            Wie meinst du das? Hast ein Beispiel?

                            ---

                            Mist, ich dachte, ich würde im Sinne von MVC coden.

                            Hab den Code so getrennt:
                            - /classes/News.class.php (liefert die Datensätze aus der DB)
                            - /news/index.php (steuert - siehe Code-Beispiel am Anfang!)
                            - /templates/news/index.tpl (dumme HTML-Templates)

                            Ist das nicht MVC?

                            Grüße
                            Lasst euch nicht lumpen, hoch den Humpen!

                            Kommentar


                            • #15
                              Re: Re: Re: Re: Re: Was haltet ihr von meinem Programmierstil?

                              Original geschrieben von carapau
                              Wie meinst du das? Hast ein Beispiel?
                              PHP-Code:
                              $person = new person();
                              $persons person->find_by_citiy('Vienna');

                              foreach (
                              $persons as $person) {
                                  
                              printf('<div>%s %s</div>'$person->firstname$person->lastname);

                              In der person Klasse werden nur der Tabellenname und die Relationen eingetragen. Der Rest geht vollkommen automatisch.

                              Gibt aber auch Unterschiede von MVC Framework zu MVC Framework.

                              Mist, ich dachte, ich würde im Sinne von MVC coden.

                              Hab den Code so getrennt:
                              - /classes/News.class.php (liefert die Datensätze aus der DB)
                              - /news/index.php (steuert - siehe Code-Beispiel am Anfang!)
                              - /templates/news/index.tpl (dumme HTML-Templates)

                              Ist das nicht MVC?
                              Nein, MVC heißt Model - View - Controller.
                              Zuletzt geändert von h3ll; 04.11.2008, 10:13.

                              Kommentar

                              Lädt...
                              X