PHP effizient & sauber

  • Hier für euch mal ein paar Hinweise wie ihr eure Sourcecodes etwas aufpeppeln könnt;

    Performance


    • Nutzt
      for ($i = 0, $cnt = count($array); $i < $cnt; $i++) { }
      anstatt
      for ($i = 0; $i < count($array); $i++) {}


      Der unterschied liegt darin das bei der falschen Variante für jeden Loop die Funktion count neu ausgeführt wird, was bei grossen Arrays sehr belastend sein kann.



    • Nutzt
      foreach ($array as $index => $value) { }
      anstatt
      for ($i = 0, $cnt = count($array); $i < $cnt; $i++) { }
      so oft ihr könnt.



    • Lieber single quotes ( ' ) als die standard Anführungszeichen ( " ) da php bei den
      standard Anführungszeichen immer überprüft ob Variablen enthalten sind.



    • Lieber die funktionen is_file() oder is_dir um Dateien oder Ordner auf existenz zu prüfen als file_exists()



    • Die Funktion empty() ist isset() vorzuziehen wenn der Inhalt auch kontrolliert werden soll, da empty die Variable auf Existenz und Inhalt prüft.



    • Bei MySql SELECT Abfragen sind möglichst immer die Spaltennamen anzugeben anstatt *, da bei der Benutzung von * nichts gecached ( für mehrmalige nutzung gelagert ) wird und somit bei häufigem benutzen von * ( stark bemerkbar bei grossen Abfrageergebnissen ) die Performance runtergezogen wird.



    Sauberkeit


    • Nutzt immer schön den white space um alles übersichtlich zu halten.
      Beispiele:
      Falsch: foreach($array=>$value){}
      Richtig: foreach ($array => $value) { }


      Falsch: if(empty($array)){} oder if($var==''){}
      Richtig: if (empty($array)) { } oder if ($var == '') { }


      Falsch: function asd($param1,$param2,$param3){}
      Richtig: function asd($param1, $param2, $param3) { }


      Falsch: asd($var1,$var2);
      Richtig: asd($var1, $var2);



    • Whitespace auch nach unten nutzen ( die oben aufgeführten Beispiele sind nur aus Platzgründen in einer Zeile).
      Beispiele:
      Falsch: siehe 1.
      Richtig: foreach ($array => $value) {

      echo $value;
      }



    • String unterbrechen um Variablen einzufügen.
      Falsch: echo "Der User heisst {$userName}";
      Richtig: echo 'Der User heisst ' . $userName;



    • Variablennamen nicht unbedingt länger als 15 Zeichen und nicht kürzer als 3.
      Optimal ist es wenn ein Laie sofort beim Lesen des Variablennamens ahnt was die Variable beinhalten könnte.


      Zudem gibt es Streitigkeiten über die Schreibweise. Ob man den Namen klein anfängt und jedes weitere Wort gross schreibt ( $userName $userID $userPassword ) oder jedes Wort mit einem Unterstrich trennt ( $user_name, $user_id, $user_password ). Ich denke das bleibt jedem selbst überlassen.


      Wichtig ist nur: MACHT ES KONTINUIERLICH ÜBERALL GLEICH!



    • Für Funktionsnamen gilt so ziemlich das gleiche ausser das ich glaube gehört zu haben ,dass die Trennung der Wörter durch Unterstriche die Norm ist.
      Beispiele:


      Falsch: function thisisafunc($param1,$param2){}
      Richtig: function thisIsAFunc($param1, $param2) { }
      Richtig2: function this_is_a_func($param1, $param2) { }




    Ich hoffe das euch diese Tips helfen und ihr euch diese auch zu Herzen nehmt und versucht euren Codestil danach zu richten.


    MfG Sick^

  • Grundlagen der Programmierung 0.1


    Aber durchaus erwähnenswert!

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)



    1355?mode=raw


    Skill ist, wenn Luck zur Gewohnheit wird

  • es ist leider so das nicht jeder bzw kaum einer ein gutes tut RICHTIG gelesen hat....


    immer wenn ich so den ein oder anderen sourcecode sehe denke ich mir so sah dein stuff auch mal aus^^


    aber das kann man durchaus ändern wenn man will :)


    Edit: zudem stehen selbst in nem guten tut nur die hälfte der sachen drinne die erklären da nicht warum man ' anstatt " nehmen soll^^

  • Ich find's gut, mach es auch so bis auf das mit den Leerzeichen, ich finde man muss nicht unbedingt if ( xyz == true ) statt if (xyz == true) schreiben
    und bei Funktionen benutze ich auch keine Unterstriche, sondern wie bei Variablen CamelCase, aber kommt denke ich auf den eigenen Stil an.
    Denn ob man z.B. find_word_in_string(x) {} oder findWordInString(x) {} schreibt ist für mich relativ egal, ich mag lieber die CamelCase Variante,
    aber ansonsten stimme ich dem Rest zu.
    (Wenn ich mir in der Schule die Quelltexte meiner Mitschüler ansehen muss und die (in C++) 8 od. mehr Zeichen für Tabulatoren verwenden, 3-4 Leerzeilen
    zwischen Anweisungen und auch die Namensgebung oft seltsam ist, da stehen mir die Haare zu Berge.)

  • Sehr guter Beitrag (*"Ich mag das!"-Button drück*)!
    Wusste vieles zum Thema Performance noch nicht. Vorallem das mit den quotes.
    Ich dachte immer das sei, damit man sich das Escapen in SQL-Querys sparen kann^^

    PHP
    1. $query = "SELECT someColumn FROM whateverTable WHERE otherColumn = '" . $somevar . "'";


    Sauberkeit im Quellcode ist irgentwie dass, was einen guten Programmierer (auch) ausmacht. Denn wenn man klar und strukturiert programmiert, kann man später Effizienter arbeiten (weil sich z.B: der Quellcode gut lesen lässt).
    Zugegeben, ich mache auch nicht alles, was du aufgelistet hat, aber das ist auch Geschmackssache.
    Jeder entwickelt eben seinen eigenen Stil.


    Ich finde jedoch das eine ordentliche Bezeichnung der Variablen, Funktionen und Klassen viel wichtiger ist als ein gut formatierter Quellcode. Den Quellcode kann man umformatieren, aber schlecht benannte Funktionen zuzuordnet erweist sich oft als schwierig. Das ist dann schon fast Reverse Engineering.


    Gruß
    florian0