Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PHP Programmierstil (https://www.delphipraxis.net/67104-php-programmierstil.html)

faux 9. Apr 2006 17:41


PHP Programmierstil
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!

Ich programmiere zwar schon seit ein paar Jahren in PHP, aber dennoch wollte ich mal fragen, ob mein Programmierstil leserlich ist und was man daran noch verbessern kann, da ich einige meiner Skripte auch auf meiner Homepage veröffentliche und diese dann auch von anderen Programmierern eingesehen werden können sollen, ohne dass er sich über den Stil ärgern muss.
Ich hänge mal eine Datei an und habe diese auch auf http://phpfi.com/111701 geladen, falls jemand keinen PHP Highlighter bei der Hand hat, oder die Datei nicht laden will.

Danke für eure Rückmeldungen
Grüße
Faux

NACHTRAG:
Bitte macht mich nicht auf fehlende Kommentare aufmerksam, ich weiß, dass das zu einem guten Stil gehört.

Flare 9. Apr 2006 17:59

Re: PHP Programmierstil
 
Doch sieht gut aus :thumb:
Wobei ich (aber ich glaube nur ich) eher auf deutsche Variablennamen ausweichen würde. So erkenne ich schneller welche Variablen von mir sind und welche vom System.
Wie du schon sagtest fehlen leider Kommentare, aber die lasse ich auch meistens weg. Allerdings sollte man vielleicht doch welche reinsetzen damit der Betrachter etwas schneller hinter den Code kommt.


Flare

S2B 9. Apr 2006 18:15

Re: PHP Programmierstil
 
Naja, den Programmierstil kann man immer nur subjektiv bewerten, also hier meine Meinung: Ich finde den Code ehrlich gesagt nicht wirklich übersichtlich. Vor allem bei den if-Schleifen habe ich Probleme nachzuvollziehen, was denn jetzt wann gemacht wird.
Ich halte es mit if-Schleifen immer so, dass ich grundsätzlich geschweifte Klammern verwende und diese auch immer in eine neue Zeile schreibe:
Code:
if ($variable == 'test')
{
  echo 'Variable enthält "test"';
}
else
{
  // sonst was...
}
Im Prinzip kann ich sagen, dass ich mich nahezu komplett an die Coding Guidelines vom neuen phpBB halte, vielleicht findest du ja dort auch noch den einen oder anderen Tipp. :)

faux 9. Apr 2006 18:21

Re: PHP Programmierstil
 
Zitat:

Zitat von Flare
Wobei ich (aber ich glaube nur ich) eher auf deutsche Variablennamen ausweichen würde. So erkenne ich schneller welche Variablen von mir sind und welche vom System.

Hm.. Ich finde, das klingt dann etwas seltsam: $anfrage_abstimmungen anstatt von $query_votes *g*
Naja, wie S2B schon gesagt hat, man kanns nur subjektiv beantworten.

Stimmt. Kommentare sind sicherlich nicht fehl am Platz.

Zitat:

Zitat von S2B
Vor allem bei den if-Schleifen habe ich Probleme nachzuvollziehen, was denn jetzt wann gemacht wird.

Also diese Art von Schleifen kenne ich noch garnicht: if-Schleifen... :mrgreen:
Aber ja, du hast recht. Das habe ich mir in C# auch schon angewöht, keine Ahnung wieso ich das in PHP nicht mache. ;) Naja, platzraubend ist es schon sehr.

Zitat:

Zitat von S2B
Im Prinzip kann ich sagen, dass ich mich nahezu komplett an die Coding Guidelines vom neuen phpBB halte, vielleicht findest du ja dort auch noch den einen oder anderen Tipp. :)

Werde ich mir mal ansehen. Danke.

Grüße
Faux

S2B 9. Apr 2006 18:26

Re: PHP Programmierstil
 
Zitat:

Zitat von faux
Also diese Art von Schleifen kenne ich noch garnicht: if-Schleifen... :mrgreen:

*grml*
Wie heißt das denn richtig? :stupid:

Zitat:

Zitat von faux
Naja, platzraubend ist es schon sehr.

Vor einiger Zeit habe ich mir angewöhnt, nicht mehr auf den Platz zu achten, sondern allein auf die Lesbarkeit... :wink:

Elvis 9. Apr 2006 18:28

Re: PHP Programmierstil
 
Zitat:

Zitat von S2B
Zitat:

Zitat von faux
Also diese Art von Schleifen kenne ich noch garnicht: if-Schleifen... :mrgreen:

*grml*
Wie heißt das denn richtig? :stupid:

Statements, clauses, Klauseln, Blöcke, Erdbeerkuchen,...

btw: Wenn du etwas camelCasing statt ekelhafter Unterstriche nehmen würdest, könnte ich es sogar zu Ende lesen ohne panikartig ctrl+F4 zu drücken...

S2B 9. Apr 2006 18:36

Re: PHP Programmierstil
 
Zitat:

Zitat von Elvis
btw: Wenn du etwas camelCasing statt ekelhafter Unterstriche nehmen würdest, könnte ich es sogar zu Ende lesen ohne panikartig ctrl+F4 zu drücken...

Ansichtssache. Meiner Meinung nach sind die Unterstriche die Leerzeichen des Programmierers. *g*

Airblader 9. Apr 2006 19:10

Re: PHP Programmierstil
 
Nun,
auch ich bewerte nach meinem Stil:

An sich sidn Einrückungen etc. schon lobenswert (da leider nicht selbstverständlich).
Was mir nicht so gefallen mag ist:

Variablen / Funktionsnamen
Deine Namen sagen immerhin schon etwas aus, aber ich persönlich würde sie noch aussagekräftiger gestalten.
Wenn sie sich aus Wörtern zusammensetzen ("$meinevar"), so kennzeichne ich das auch: $meineVar.
Ich gehe dann aber noch einen Schritt weiter und setze ein Präfix, der etwas über den Typ der Variable aussagt.
Wäre $meineVar also z.B. ein Boolean(String), würde es auch so heißen: $bMeineVar ($sMeineVar).

Absätze
Ich persönlich würde öfters mal die ENTER-Taste betätigen. Für mich symbolisieren Absätze die Trennung von zusammengehörigen Codes. Beispiel:

Code:
    if ($this->connection && DEBUG == 1)
      echo "\n";
    elseif (DEBUG == 1)
      echo "\n";
    $change = mysql_select_db($_CONFIG['db'], $this->connection);
    if ($change && DEBUG == 1)
      echo "\n";
    elseif (DEBUG == 1)
      echo "\n";
=>

Code:
    if ($this->connection && DEBUG == 1)
      echo "\n";
    elseif (DEBUG == 1)
      echo "\n";

    $change = mysql_select_db($_CONFIG['db'], $this->connection);

    if ($change && DEBUG == 1)
      echo "\n";
    elseif (DEBUG == 1)
      echo "\n";
Kommentare
Für mich das Stilkennzeichen schlechthin. Wenn mal andere Leute ins Team kommen und sich einarbeiten müssen, haben sie ohne Kommentare keine Chance dazu (*aus Erfahrung sprech*). Außerdem machen sie jeden Code übersichtlich und lassen schnell erkennen, worum es geht (so kann man sich die Zeit sparen, den Code zu lesen und zu interpretieren, was dort nun nochmal gemacht wird).
Bei größeren Scripts sind Kommentare auch für eine einzelne Person (über-)lebenswichtig (*wieder aus Erfahrung sprech*).
Sinnlose Kommentare bei Stellen wie "$i++;" o.ä. muss man natürlich nicht setzen ;)

Ansonsten mache ich noch ganz gern folgendes:
An den Anfang jeder Datei eine kurze Erklärung:
  • Von wann ist die Datei?
  • Evtl. Neuerungen / Fixes (mit Datum)
  • Autor
  • Inhalt und Funktion
  • ... (evtl. andere wichtige Informationen)


Wie gesagt - alles nur subjektiv! ;)

air

Matze 9. Apr 2006 22:13

Re: PHP Programmierstil
 
Hi,

also deine if-Abfragen (auch genannt Erdbeerkuchen @Elvis :mrgreen: ) sind graußlich, sorry, das ist ja nur unübersichtlich. :stupid:

Ich formatiere auch generell meinen php-Code und zeige dir, wie ich das mache. Dein Code formatiert. Falls ich das vom Server nehmen soll, dann sag es bitte und ich schmeiß es runter.

Neuni 9. Apr 2006 22:23

Re: PHP Programmierstil
 
Mal so nebenbei: Gibts ein Programm dass das ganze übersichtlich darstellt?
So wie im Firefox mit dem HTML-code wenn man den "bereinigt".

faux 10. Apr 2006 08:27

Re: PHP Programmierstil
 
Zitat:

Zitat von Matze
also deine if-Abfragen (auch genannt Erdbeerkuchen @Elvis :mrgreen: ) sind graußlich, sorry, das ist ja nur unübersichtlich. :stupid:

Ich formatiere auch generell meinen php-Code und zeige dir, wie ich das mache. Dein Code formatiert. Falls ich das vom Server nehmen soll, dann sag es bitte und ich schmeiß es runter.

Also nachdem mich S2B darauf aufmerksam machte, machte ich mich sofort an die Arbeit und setzte auch zu einzeiligen if-Erdbeerkuchen die Klammern. ;)
Im Prinzip sieht mein Code jetzt wie dein Vorschlag aus, nur dass ich die Zeilenumbrüche in einer zusammengehörigen Zeile weggelassen habe (außer bei den SQL-Statements).

Danke für die Vorschläge!

Grüße
Faux

alcaeus 10. Apr 2006 08:36

Re: PHP Programmierstil
 
Zitat:

Zitat von Matze
Ich formatiere auch generell meinen php-Code und zeige dir, wie ich das mache.

Sorry Matratze, aber bei deinem gibts auch noch was:
es gibt einen Unterschied zwischen Funktionen und Schluesselwoertern. Und genau deshalb schreibt man sie auch anders:
Code:
$foobar = doSomething($foobar);
aber
Code:
if ($foobar === 5) {}
Nach Schluesselwoertern ein Leerzeichen zu machen erhoeht die Lesbarkeit, vor allem wenn jemand ohne Syntaxhighlighter deinen Code an sieht (ja, solche Leute soll es geben ;) ).

Weiters gibt es was Funktionsaufrufe betreffen noch ein paar Unsitten, hier mal alle in einen Block geworfen:
Code:
$foobar=foobar( $foobar );
$foobar = foobar ($foobar,$bar,$foo);
$foobar = foobar( $foobar , $bar , $foo);
Am leichtesten zu lesen finde ich immer noch das:
Code:
$foobar = foobar($foobar, $bar, $foo);
Also Leerzeichen um Operatoren, kein Leerzeichen nach Funktionsnamen, keines nach/vor den Klammern, aber eines nach dem Komma zur Parametertrennung.

Dasselbe gilt bei Ausdruecken:
Code:
if ($a == 5 || $b == 3 && $c == 5)
Das ist IMO nur haesslich und verwirrend. Benutze Klammern:

Code:
if (($a == 5 || $b == 3) && $c == 5)
Manche Leute (ich gehoere auch dazu) setzen dann nochmal Klammern um die einzelnen Ausdruecke; dies ist aber nicht unbedingt noetig um die Lesbarkeit zu erhoehen (bzw. um zu garantieren dass der Code funktioniert)

Dann: wenn du einen String hast, der keine Variablen enthaelt, verwende ' anstatt ". Wenn der Parser einen String in " sieht, dann laeuft er drueber um evtl. vorkommende Variablen zu ersetzen. Mit ' gehts also ein kleines bisschen schneller ;)

Greetz
alcaeus

faux 10. Apr 2006 10:06

Re: PHP Programmierstil
 
Hallo alcaeus!

Also ich kann keinen deiner Vorwürfe in Matze's Code finden. :gruebel:

Grüße
Faux

Matze 10. Apr 2006 10:12

Re: PHP Programmierstil
 
Hi,

ich auch nicht so direkt. Nach if steht bei mir generell ein Leerzeichen, bei Funktionaufrufen folgt die Klammer direkt nach dem Funktionsnamen und die Parameter fangen direkt hinter der Klammer an ohne Leerzeichen. Also so:

Code:
functionname($foo, $blubb)
Ich finde das ganz gut leserlich, aber ok, ich nutze generell einen Syntaxhighlighter. Wer keinen nutzt, ist selber schuld. :mrgreen:

faux 10. Apr 2006 12:02

Re: PHP Programmierstil
 
Was sagt ihr zur Kommentierung?
http://phpfi.com/111833

Matze 10. Apr 2006 12:06

Re: PHP Programmierstil
 
Zitat:

Zitat von faux
Was sagt ihr zur Kommentierung?

Ich finde sie übersichtlich und komme damit gut zurecht. Auch wenn ich meinen Code nie so ausführlich kommentiere. Ok, aber meist spricht der Code auch für sich selbst. :stupid:

Airblader 10. Apr 2006 12:14

Re: PHP Programmierstil
 
Also ich finde das so gut kommentiert ;) Mein Bruder kommentiert wesentlich mehr, für mich aber unverständlich.
So ist es imo lesbar für jeden. ;)

air

alcaeus 10. Apr 2006 12:24

Re: PHP Programmierstil
 
Zitat:

Zitat von faux
Also ich kann keinen deiner Vorwürfe in Matze's Code finden. :gruebel:

Code:
foreach($answers as $answer)
:mrgreen:

Greetz
alcaeus

Matze 10. Apr 2006 12:30

Re: PHP Programmierstil
 
Zitat:

Zitat von alcaeus
Code:
foreach($answers as $answer)
:mrgreen:

Ok, da habe ich persönich generell ein Leerzeichen dazwischen. ^^ Hatte den Code auch nur schnell überflogen.

faux 10. Apr 2006 13:05

Re: PHP Programmierstil
 
Zitat:

Zitat von Matze
Zitat:

Zitat von alcaeus
Code:
foreach($answers as $answer)
:mrgreen:

Ok, da habe ich persönich generell ein Leerzeichen dazwischen. ^^ Hatte den Code auch nur schnell überflogen.

Okay, das ist aber mein Fehler. Habe ich übersehen. Mache ich sont nämlich auch immer. Ist aber ein Einzelfall: Ausnahmen bestätigen die Regel. ;)

Grüße
Faux

Ben 10. Apr 2006 14:37

Re: PHP Programmierstil
 
Hallo,

wenn ich ganz ehrlich bin, finde ich den Code absolut unübersichtlich. Vielleicht liegt das aber auch an meiner etwas ungewöhnlichen Art zu programmieren. Teilweise sind meiner Meinung nach zu viele Leerzeichen gesetzt, an anderen Stellen halte ich Zeilenumbrüche für überflüssig, obgleich sie durchaus üblich sind. Zum Beispiel mache ich vor der Klammer { nie einen Zeilenumbruch, sodass ich anstelle von
Code:
  function fetch_num($result = NULL)
  {
    $this->data = mysql_fetch_array(($result) ? ($result) : ($this->result), MYSQL_NUM);
    return $this->data;
  }
lieber das hier schreiben würde:
Code:
  function fetch_num($result = NULL) {
    $this -> data = mysql_fetch_array(($result) ? ($result) : ($this -> result), MYSQL_NUM);
    return $this -> data;
  }
Das sind nur ganz simple Sachen. In umfangreicheren Codes helfen sie mir jedoch immens, den Überblick zu behalten. Letztendlich ist der Stil jedoch eine absolut subjektive Angelegenheit und jegliche Diskussion darüber ist im Grunde genommen sinnlos, da am Ende doch jeder bei seiner Meinung bleibt.

Mit freundlichen Grüßen,
Ben

[edit=alcaeus]delphi- durch code-Tags ersetzt ;) Mfg, alcaeus[/edit]

S2B 10. Apr 2006 14:49

Re: PHP Programmierstil
 
Zitat:

Zitat von Ben
Letztendlich ist der Stil jedoch eine absolut subjektive Angelegenheit und jegliche Diskussion darüber ist im Grunde genommen sinnlos, da am Ende doch jeder bei seiner Meinung bleibt.

Zum ersten Punkt ja, zum zweiten nein: Warum ist diese Diskussion sinnlos? Nur durch solche Diskussionen lernen andere, Struktur in ihren Code zu bringen bzw. lernen, wie sie ihren Code weiter verbessern können. Ohne die Coding Guidelines, die mir eines Abends zufällig in die Hände (unter den Mauszeiger ;) ) gefallen sind, würde ich heute immer noch if ( $lalala == 'test' ) schreiben, ja mehr noch, ich hätte keine allgemeinen "Regeln", wie ich meinen Code schreibe, und genau dadurch wird der Code unübersichtlich.

DevilsCamp 10. Apr 2006 15:01

Re: PHP Programmierstil
 
Zitat:

Zitat von Ben
an anderen Stellen halte ich Zeilenumbrüche für überflüssig, obgleich sie durchaus üblich sind. Zum Beispiel mache ich vor der Klammer { nie einen Zeilenumbruch,

Meiner Meinung nach macht genau sowas einen Quelltext unleserlich. Oder schreibst du bei Delphi das Begin auch immer in die selbe Zeile wie dein IF?

Ich musste mal einen Quelltext auseinander nehmen, bei zwar Einrückungen vorgenommen wurden, diese waren aber nicht konsequenterweise entweder nur mit TABs oder mit gleicher Anzahl von Leerzeichen, sonder wild gemischt.
Dadurch konnte man mal sehr schnell übersehen, wenn eine IF-Anweisung über mehrere Zeilen ging, da die { auch noch in der selben Zeile waren wie die IF-Anweisung selber (weshalb man sich dann irgendwann wunderte, dass die Anweisung eigentlich gar nicht mehr zu einer Funktion gehören dürfte, nachdem man die Einrückungen richtig gesetzt hat).



Zitat:

Zitat von alcaeus
Weiters gibt es was Funktionsaufrufe betreffen noch ein paar Unsitten, hier mal alle in einen Block geworfen:
Code:
$foobar=foobar( $foobar );
$foobar = foobar ($foobar,$bar,$foo);
$foobar = foobar( $foobar , $bar , $foo);
Am leichtesten zu lesen finde ich immer noch das:
Code:
$foobar = foobar($foobar, $bar, $foo);
Also Leerzeichen um Operatoren, kein Leerzeichen nach Funktionsnamen, keines nach/vor den Klammern, aber eines nach dem Komma zur Parametertrennung.

Leider gibt es immer noch Programmierer die genau sowas machen, weil sie meinen es sieht gut aus und/oder sie kommen von VB.
Da kann man ja Funktionen wie folgt aufrufen:
Code:
rem Aufrufart 1
MeineFunktion(Parameter1, Parameter2)

rem Aufrufart 2
MeineFunktion Parameter, Parameter2

OT:
Den schlimmsten Quell-Text den ich bisher in die Finger bekam war ein java-Script, das der Autor komplett in EINE Zeile geschrieben hatte.
Nach setzen aller nötigen Zeilenumbrüche kam ich dann auf stolze 94 Zeilen.

faux 10. Apr 2006 15:06

Re: PHP Programmierstil
 
Zitat:

Zitat von DevilsCamp
OT:
Den schlimmsten Quell-Text den ich bisher in die Finger bekam war ein java-Script, das der Autor komplett in EINE Zeile geschrieben hatte.
Nach setzen aller nötigen Zeilenumbrüche kam ich dann auf stolze 94 Zeilen.

Sieh dir mal das JavaScript an, dass Google in den AdSense Code einbindet, dass viele Leute (wie auch ich) auf ihrer Homepage haben:
http://pagead2.googlesyndication.com/pagead/show_ads.js
Das grenzt auch schon an Unübersichtlichkeit.

DevilsCamp 10. Apr 2006 15:08

Re: PHP Programmierstil
 
Wie kann man
1. So einen Code schreiben und
2. sowas auf seine Page setzen?

alcaeus 10. Apr 2006 15:09

Re: PHP Programmierstil
 
Zitat:

Zitat von faux
Das grenzt auch schon an Unübersichtlichkeit.

Das ist bei Google generell so - also entweder ein Ergebnis deren Templates oder was auch immer, oder eben eine Strategie um den Code "kopiersicher" zu machen ;)

Greetz
alcaeus

faux 10. Apr 2006 15:11

Re: PHP Programmierstil
 
Zitat:

Zitat von DevilsCamp
Wie kann man
1. So einen Code schreiben und
2. sowas auf seine Page setzen?

Zu 1. Ich denke mal, dass es hier um Performance geht. Viele Webseiten binden diesen Code auf beinahe jeder Seite Seite ein, wodurch er (wenn der Browser keinen Cache hat) nach jedem Aufruf erneut geladen werden muss. Da machen die paar kB schon einiges aus.

Zu 2. Indem man sich auf https://www.google.com/adsense/home anmeldet und dann einen Code generieren lässt, den man auch nicht mehr verändern darf.

DevilsCamp 10. Apr 2006 15:13

Re: PHP Programmierstil
 
Ich wollte mit 2. eigentlich wissen, wie man freiwillig so eine Werbung auf seine Seite setzen kann?

Matze 10. Apr 2006 15:14

Re: PHP Programmierstil
 
Zitat:

Zitat von DevilsCamp
Ich wollte mit 2. eigentlich wissen, wie man freiwillig so eine Werbung auf seine Seite setzen kann?

Manche möchten eben diese Prämie, Google zahlt ja dafür. Aber nun bitte zurück zum Thema. ;)

Ben 10. Apr 2006 15:15

Re: PHP Programmierstil
 
Zitat:

Zitat von DevilsCamp
Zitat:

Zitat von Ben
an anderen Stellen halte ich Zeilenumbrüche für überflüssig, obgleich sie durchaus üblich sind. Zum Beispiel mache ich vor der Klammer { nie einen Zeilenumbruch,

Meiner Meinung nach macht genau sowas einen Quelltext unleserlich. Oder schreibst du bei Delphi das Begin auch immer in die selbe Zeile wie dein IF?

Jap und wenn ich ganz ehrlich bin, sehe keinen Grund, das nicht zu tun. Eines Besseren belehren lasse ich mich gerne, aber ändern werde ich meine Gewohnheiten nicht. :P

Mit freundlichen Grüßen,
Ben

freak4fun 10. Apr 2006 15:42

Re: PHP Programmierstil
 
Was mir bei mir auffällt ist, das ich, wenn ich Quellcode von anderen kopiere um ihn zu bearbeiten, ihn erstmal nach meinen Richtlinien umformatiere. Dann veränder ich den Quellcode und poste ihn wieder. Ich glaube das ist auch für den Ersteller des Codes nicht so schön, da er das auch wieder anpassen muss. Aber ich kann halt mit meiner Formatierung am besten arbeiten. :stupid: Geht euch das auchso?

MfG
freak

Ben 10. Apr 2006 15:51

Re: PHP Programmierstil
 
Jo.. das ist auch immer das erste, was ich mache, wenn ich Code sehe.

Mit freundlichen Grüßen,
Ben

S2B 10. Apr 2006 16:02

Re: PHP Programmierstil
 
Bei mir genau gleich... Ich denke aber nicht, dass das für den anderen unbedingt schlecht ist. Vor allem bei "Anfängern" auf phpBB.de, die ihren Code irgendwo in den Tiefen des Internets gefunden haben und dann halt einfach per C&P einbauen, ist das manchmal eine große Hilfe. Schönerer Code ermutigt natürlich, sich näher damit zu beschäftigen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz