kostenloser Webspace werbefrei: lima-city


Programmierstil

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    gysueaktueller

    gysueaktueller hat kostenlosen Webspace.

    Hallo,
    ich wollte mal in die Runde fragen, wie Ihr mit PHP programmiert.

    Ich z.B. lege immer viel Wert auf die Richtigen Einrückungen und Übersicht;
    habe eine lange Zeit immer nur mit Funktionen und verschachtelten ifs gearbeitet, nun steige ich mit einem guten Buch auf objektorientierte Programmierung um und nutze zunehmend den Befehl switch.

    Wie programmiert Ihr?
    Worauf legt ihr bei der Programmierung besonders viel Wert?

    gysueaktueller
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. gysueaktueller schrieb:
    Worauf legt ihr bei der Programmierung besonders viel Wert?

    Darauf, daß es möglichst effizient und sicher funktioniert. Alles andere ist persönliche Vorliebe und Kosmetik.

    FF
  4. Die Formatierung, die in meinen Code's drinne ist kommen alle von meinem Editor, das kümmert mich eigentlich nicht. Ich mache aber gerne viele Kommentare zu den einzelnen Funktionen und Anweisungen, um mir zu merken, was was bezweckt.

    Mein Hauptpunkt ist, dass es gut, schnell und sicher funktioniert.
  5. Am wichtigsten ist denke ich
    a) Unit Tests für den Code zuschreiben
    b) den Code so zu schreiben, dass man ihn auch wirklich Testen kann - SOLID
  6. entweder ich schreibe viele verschieden Funktionen um alles einzeln zu testen und bessere Übersicht zu haben oder ich schreibe alles in einem ewig langen Programm wo nur ich durchsehe und sonst keiner.
  7. Naja Code-Design ist schon wichtig, wenn du aber nur für dich selbst programmierst, spielt es gar keine Rolle wie es aussieht, so lange du es lesen kannst.

    Ich rücke auch immer alles schön ein.

    OOP für PHP ist zwar etwas witzlos (weil PHP halt einfach so eine schmudlige Sprache ist), aber ein guter Ansatz. Es lässt sich z.B. eine Datenbank Klasse entwickeln, welche in jedem Skript verwendet werden kann.
    Doch wie nikic geschrieben hat, ist es wichtig den Code für Unit Tests zu optimieren.

    Ob if oder switch kommt immer auf die Verwendung drauf an, bei einer grossen State-Change-List ist es sicher nützlich switch zu verwenden. Wobei man sich dann nicht überlegen kann, ob das wirklich der richtige Weg ist.
    Wenn du wirklich OOP gehen möchtest, kannst dies evtl. je nach Situation mit State-Klassen und einem Array lösen.

    mfg Lukas
  8. Autor dieses Themas

    gysueaktueller

    gysueaktueller hat kostenlosen Webspace.

    Vielen Dank,
    all eure Meinungen finde ich sehr insteressant und hilfreich.

    p.s.:
    Mit arrays arbeite ich natürlich auch.
  9. anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    Klar, das wichtigste ist natürlich, dass es funktioniert...
    Insbesondere bei OpenSource-Kram muss man jedoch auch auf die "Kosmetik" achten:
    - keine veralteten (deprecated) Befehle
    - wenn UTF-8-Codierung, dann ohne BOM (insbesondere wegen header()-Funktionen)
    - Statt eines Tabs lieber 4 Leerzeichen (wegen Kompatibilitätsproblemen)
    - Keine Short-Open-Tags (da deaktivierbar)
    - PHP-ClosedTags am Datei-Ende reiner PHP-Skripte beherzt weglassen (um Ausgabe von Zeichen zu verhindern)
    - einheitliche Zeilenumbrüche (Unmengen an Möglichkeiten, je nach Editor: \r \n \r\n \0 \x \x0 ... )
    - Ausgabe von Zeilenumbrüchen über echo() oder print() mittels chr(15).chr(10)
    - echo() statt print() und einfache, statt doppelte Leerzeichen (um Skript-Laufzeit zu beschleunigen)
  10. anti-atomkraft schrieb:
    - Ausgabe von Zeilenumbrüchen über echo() oder print() mittels chr(15).chr(10)

    Huh, wer hat dir denn den Mist untergejubelt?! Kein Schwein weiß was chr(15) und chr(10) sind. Benutz lieber allgemeinverständliche "\r" und "\n".
  11. Mal ganz abgesehen von der Codeformatierung (Einrückungen, highlighting, etc.) Ist es wichtig Funktionen, Variablen, Elemente und Objekte sinnvoll und strukturiert zu benennen.

    Am besten suchst du dir Kürzel zusammen, um immer zu wissen, handelt es sich um eine Globale Variable? ein Objekt oder Element? Was ist die Funktion davon? Welches Format (zB. String, Integer, Array, Boolean, usw.) versteckt sich hinter einer Variable?

    Das alles lässt sichmit einer sinnvollen Benamsung leicht übersichtlich und auch nach langer Zeit (sofern du dich immer an diese Regeln hältst) noch gut einlesbar.

    MFG
  12. anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    nikic schrieb:
    anti-atomkraft schrieb:
    - Ausgabe von Zeilenumbrüchen über echo() oder print() mittels chr(15).chr(10)

    Huh, wer hat dir denn den Mist untergejubelt?! Kein Schwein weiß was chr(15) und chr(10) sind. Benutz lieber allgemeinverständliche "\r" und "\n".


    1. Wenn man einfache, statt Doppelte Leerzeichen verwendet; funktioniert dergleichen nicht.
    chr(15) ist nichts anderes als "\r" und chr(10) ist "\n".
    2. Um unterschiedliche Codierungen und PHP-Einstellungen zu berücksichtigen, lieber dies verwenden (höhere Kompatibilität)
  13. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Code sollte soweit wie möglich optimiert sein (=schnellere Ausführung). Gleichzeitig sollte er aber von jedem gelesen werden können. Einrückung sollte man unbedingt verwenden (bessere Lesbarkeit).
    Was ich persönlich noch versuche (und auch anderen empfehle) ist den Code so zu schreiben dass man ihn wiederverwenden kann, falls man irgendwo anders etwas ähnliches wieder braucht.
  14. anti-atomkraft schrieb:
    1. Wenn man einfache, statt Doppelte Leerzeichen verwendet; funktioniert dergleichen nicht.
    chr(15) ist nichts anderes als "\r" und chr(10) ist "\n".
    2. Um unterschiedliche Codierungen und PHP-Einstellungen zu berücksichtigen, lieber dies verwenden (höhere Kompatibilität)

    Nur um sicher zu gehen, dass ich das richtig verstanden habe: du benutzt das komplett unlesbare chr(15) anstelle von "\n", weil du keine doppelten Anführungszeichen verwenden willst, weil du denkst, dass sie langsam sind? Wenn das der Fall sein sollte, dann muss ich dich leider enttäuschen ;) Einfache und doppelte Anführungszeichen haben keinen (messbaren) Performanceunterschied und chr(15) ist da im Gegensatz *deutlich* langsamer, da Funktionsaufrufe immer recht viel Overhead haben.
  15. anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    nikic schrieb:
    Nur um sicher zu gehen, dass ich das richtig verstanden habe: du benutzt das komplett unlesbare chr(15) anstelle von "\n", weil du keine doppelten Anführungszeichen verwenden willst, weil du denkst, dass sie langsam sind? Wenn das der Fall sein sollte, dann muss ich dich leider enttäuschen ;) Einfache und doppelte Anführungszeichen haben keinen (messbaren) Performanceunterschied und chr(15) ist da im Gegensatz *deutlich* langsamer, da Funktionsaufrufe immer recht viel Overhead haben.


    Und ob sie schneller sind! Sogar erheblich! Innerhalb doppelter Anführungszeichen durchsucht das Programm den String nämlich nach Variablen, in einfachen nicht.
    echo "Hallo, $nutzer";
    geht,
    echo 'Hallo, $nutzer';
    nicht.

    Natürlich bliebe die Möglichkeit, zu schreiben
    echo 'blablabla'."\r\n".'blablabla';

    Hier greift jedoch mein zweites Argument, warum es mittels chr() besser ist. ;-)

    Beitrag zuletzt geändert: 11.12.2011 21:31:12 von anti-atomkraft
  16. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Die Ausführung von
    echo "ein Text\r\n";
    ist trotzdem schneller als irgendwelche Funktionsaufrufe. Bei deinem chr muss 2x eine Funktion aufgerufen werden => Overhead. Bei echo "bla"; hingegen wird nur echo aufgerufen und ein Ersetzen von Text ist effektiv implementiert. Wenn du einen Text ersetzt, wie würdest du das machen? Etwa jedes mögliche "\r" ... ersetzen? Viel warscheinlicher ist in einer 6-CPU-Befehle-Schleife nach dem Auftreten von $ und \ suchen und dann erst irgend etwas ersetzen.
  17. anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    hackyourlife schrieb:
    Die Ausführung von
    echo "ein Text\r\n";
    ist trotzdem schneller als irgendwelche Funktionsaufrufe.


    Das streite ich überhaupt nicht ab...
    Nur
    echo 'ein Text'."\r\n".'weiterer Text';
    ist schneller, als deine Methode ;-)
    Und
    echo 'ein Text'.chr(15).chr(10).'weiterer Text';
    sorgt für weniger Kompatibilitätsprobleme als die vorherige Version...
    In dem angesprochenen Fall (OpenSource) geht Kompatibilität halt vor.

    Beitrag zuletzt geändert: 12.12.2011 14:08:07 von anti-atomkraft
  18. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    und was ist an
    echo 'ein Text'.chr(15).chr(10).'weiterer Text';
    kompatibler als
    echo 'ein Text'."\r\n".'weiterer Text';
    Warum kannst du nicht einfach
    echo "ein Text\r\nweiterer Text";
    schreiben (was übrigens auch schneller ausgeführt wird als die beiden anderen Varianten)?
    Was genau verstehst du unter Kompatibilität?

    EDIT:
    anti-atomkraft schrieb:
    echo 'ein Text'."\r\n".'weiterer Text';
    ist schneller, als deine Methode ;-)

    Stimmt leider nicht: ist auch langsamer als ein einfaches
    echo "eins\r\nzwei";
    Der Grund: deine Version muss 3 Strings miteinander verbinden UND ein "\r\n" auflösen, meine nicht. Bei meiner Variante wird die Ausführungsgeschwindigkeit deshalb geringfügig höher sein.
    Die Differenz geht aber gegen null und wird dir völlig egal sein solange du keinen Traffic wie auf einem Facebook-Server hast. Wenn du das hättest würdest du aber warscheinlich sowieso zu JSP umsteigen und dir keine solchen Fragen mehr stellen (weil das ganze in JSP hinfällig ist!) ;-)

    Beitrag zuletzt geändert: 12.12.2011 18:08:57 von hackyourlife
  19. Um wieder zurück zum Topic zu kommen:
    Früher war es mir egal, wie der Code aussieht.
    Mittlerweile versuche ich schon recht streng das HTML vom PHP zu trennen und innerhalb vom PHP dann den Datenbankkram von der Logik.
    Also ich mache mir ein Model, was sich darum kümmert, die DB anzupassen, und in der Logik sage ich einfach nur $object->eatFishAndDie();
  20. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    rissrosi schrieb:
    Mittlerweile versuche ich schon recht streng das HTML vom PHP zu trennen und innerhalb vom PHP dann den Datenbankkram von der Logik.

    Solch eine Trennung ist immer gut, vor allem wenn man den Code wo anders mal wieder verwenden möchte und nicht 1. alles neu schreiben will oder 2. alles umschreiben will (bei der neuen Seite).
  21. u***e

    Die wichtigsten Punkte, die hier auch schon genannt wurden,
    sind natürlich Funktionalität, Effizienz und Wartbarkeit.

    Ich bin der Meinung man sollte sehr ausführlich auskommentieren,
    auch wenn man nur für sich selbst schreibt, was wiederrum bei der
    Zusammenarbeit mit anderen selbstverständlich sein sollte.

    @anti-atomkraft
    Wenn du dir Gedanken über die Kompatibilität von Zeilenumbrüchen machst
    gibt es dafür die PHP_EOL Konstante, das mit dem chr(15) und chr(10) ist Blödsinn.

    ;-)

    Und mal ganz im allgemein bezweifle ich, dass es hier irgendjemanden gibt der solch große
    Webanwendungen schreibt,
    dass der minimale Geschwindigkeitsunterschied von Single und Double Quotes relevant ist.
    Aber davon mal abgesehen finde ich es angebracht Single Quotes zu verwenden.
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!