FAQ Suchen Synapsis Wiki Projekte Mitgliederliste Benutzergruppen Profil Einloggen, um private Nachrichten zu lesen Registrieren Login

[PHP] - Stil, Übersicht, Kommentare & anderes

 
Neues Thema eröffnen   Neue Antwort erstellen    Syncom.org Foren-Übersicht -> Interpretersprachen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
PhP0Kid
Profi-Benutzer


Anmeldedatum: 05.01.2007
Beiträge: 413
Wohnort: Ellwangen (nahe Aalen)
Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)

BeitragVerfasst am: 18.01.2007, 22:13    Titel: [PHP] - Stil, Übersicht, Kommentare & anderes Antworten mit Zitat

Hier soll es nun einmal um einen sauberen Php-Stil gehen. Es ist toll nur einen Texteditor zu verwenden, ich habe das bis vor kurzem auch noch getan. Programme, die aber hilighten und einrücken sind doch sehr komfortabel und vor allem (!) stilvoll.

1. Beispielcode (1)
Code:

session_start();
if(!$user) $_SESSION['user'] = "Gast";
else $_SESSION['user'] = $user;

Okay, das ist ledeglich ein Beispielscript, aber dennoch hier die ersten Worte dazu.

a) Kommentare
Kommentare sind nicht notwendig, besonders bei einem solch kleinen Script und noch dazu am Anfang eines Scriptes. Dennoch sind sie auf Dauer sehr wichtig. Zu Beginn habe ich es auch nicht genutzt, aber gestern erst hab ich zum Beispiel 900 Zeilen Php-Code geschrieben. Wenn man da keine Kommentare hat, blickt man nicht mehr durch. Und mit Kommentaren wie "Globale Variablen" oder "Formular hier" oder derartigem kommt man nicht weit. Nicht nur, dass es sehr wenig aussagt, es trägt auch wenig zur Übersicht bei.
Praktisch wäre auch mit Kommentaren seinen Code zu gliedern. Große Teile mit //----- NAME -----// trennen, kleinere mit //++++ ++++// oder //##### #####//. Eine Symetrie, Gleichmäßigkeit und Gewohnheit ist hier gefragt. 3-zeilige Kommentare, die wichtig sind, sind nicht schlimm, es sollte aber wenn möglich immer das Wichtigste drin stehen; nicht mehr und nicht weniger.

b) PHP-Standart
Ja, es ist schwer, immer mit den neuesten Versionen von PHP mitzuhalten, Funktionen, Schleifen, Operatoren usw richtig zu nutzen, aber dennoch sollte man sich hin und wieder informieren über einzelne Dinge. "<?" ist veraltet und sollte nicht verwendet werden. Das beste (aus meiner Sicht, weil es kurz ist) ist immer noch "<php>" ganz einfach aus dem Grund, weil "<?" mit XML vertauscht werden könnte. Normalerweise nicht schlimm, aber sicher ist sicher.
if(!$user) sagt vieles über den Scripter aus. Für mich sagt das, der Scripter ist faul oder nicht weiter informiert. Der neue Standart heißt if(!isset($_POST['user'])) weil in dem Fall bekommen wir $user über ein Formular geschickt und nicht über die URL-Zeile. Das ist das nächste. Wer alles per $_REQUEST macht, bekommt leicht Sicherheitsprobleme, denn damit lassen sich nicht nur $_POST-Variablen über $_GET verändern, sondern auch Cookies und Sessions. Sehr unsicher, daher immer register_globals off und mit den exakten Bezeichnungen arbeiten.

Zu diesem Code gibt es nicht viel mehr zu sagen, denn einige Dinge, die ich noch ansprechen möchte, sind hier nicht notwendig, daher ein weiterer Code:

2. Beispielcode (2)
Code:

session_start();
if(!isset($_POST['user'])||$_POST['user']== Gast) $_SESSION['user'] = "Gast";
else $_SESSION['user'] = $_POST['user']; $_SESSION['loggedin'] = "yes";

$menu = "a, b, c";

if($_SESSION['loggedin']=="yes") $menu .= ", d, e";


c) Einrücken
Ein Code ist dermaßen unübersichtlich, wenn gar nichts eingerückt ist. Bei if-Anweisungen werden fast immer geschweifte Klammern ({,}) genutzt, der Code wird bei jeder öffnenden Anweisung mit "{" um 4 Zeichen nach innen verrutscht.
Das erhält Übersichtlichkeit und lässt schneller einzelne Schleifen zuordnen, besonders wenn man viele if-Schleifen, while-Schleifen und sonstiges hat.
Mehrere Variablen kann man natürlich nebeneinander schreiben ($a = b; $b = c) aber ich empfinde die Übersichtlichkeit mehr, wenn diese doch in einer weiteren Zeile stehen.
Blöcke sind zusammengehörende Verarbeitungen. Zum Beispiel:

2.1 Beispielscode (3)
Code:

//Definieren der ersten Variablen & exploden
$str = "a|b|c";
$str = explode("|", $str);

$str2 = "b|e|g";
$str2 = explode("|", $str2);


In dem Fall zwar ein realtiv sinnloser Code, aber dennoch hat er seinen Sinn eines Beispiels. Hier wird deutlich, dass jede Verarbeitung seinen eigenen Block bekommt. Oft sind Blöcke sehr lang, manchmal nur kurz. Man sollte nicht zu häufig eine Zeile frei lassen, denn ansonsten erkennt das Auge keinen "besonderen Wert" eines Blockes mehr. Mit vielzeiligen Blöcken verknüpft das Auge zusammengehörende Dinge. Das macht Übersichtlichkeit weit aus besser.

d) Gewohnheit/Regelmäßigkeit
Eine Regelmäßigkeit oder einen bestimmten Stil sollte jeder Scripter mit der Zeit entwickeln. Ich behaupte keinesfalls, dass das, was ich hier vorstelle perfekt ist. Nein, es ist eine Stilentwicklung. Jemand, der bei der ersten Schleife "||" als Operator nutzt und bei der nächsten "OR" und dann nochmals "OR" und dann weider "||", der hat den Sinn von Stil nicht verstanden. Stil bedeutet auch, nicht ständig zwischen "" und '' zu wechseln. Was man benutzt ist egal, beides hat Vor- und Nachteile, aber ein "Zwischendrin" ist einfach unschick.

e) Namen von Variablen
Die Benennung von Variablen ist auf Dauer sehr wichtig. Variablen sind kleine Zwischenspeicher, die man während dem Script verwendet. Wenn man nun ein Array mit Inhalt von Obstsorten hat, ist der Name $array einfach Unsinn. Wozu auch? Da wären Namen wie $obstsorten oder $sorten oder $obst viel geschickter. Auch das Wechseln von Groß- und Kleinschreibung sagt viel über Stil aus. Am besten gewöhnt man sich von Beginn an an, kleine Buchstaben zu verwenden. Ich persönlich benutze auch oft Unterstriche (_), um eine Variable genauer zu spezifizieren. Wenn ich ein Obst nun aus meinem $obstarray herausgeholt habe, nenne ich es zum Beispiel $obst_birne oder $obst_frucht oder $obst_teil oder $obstarray_einzeln oder derart. Es kommt immer auf den Inhalt an. Klar, das wichtigste ist, dass der Scripter selbst seine Variablen versteht, aber was ist, wenn er mal Scripte veröffentlichen will oder mit anderen zusammenarbeitet? Jeder sollte es dann verstehen können. Abkürzungen sollte man nur verwenden, wenn sie auch einigermaßen klar sind. Aus config wird cfg oder cfx oder aus category kann cat werden. Das ist klar. Aber für Obst die Abkürzung O zu benutzen ist doch sehr verwirrend.


Im Allgemeinen wird jeder mit der Zeit seinen eigenen Stil entwickeln, das ist klar. Man wird sich Stilmittel von anderen abschauen und mit der Zeit bei sich übertragen, aber dennoch sollte man nicht schlampig mit seinen Scripten umgehen; denn umso leichter fällt auch eine Problembehebung.


liebe Grüße

_________________
http://www.Julian-Stier.de | T-REx 2.2

Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008

Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
doh
Administrator


Anmeldedatum: 17.10.2006
Beiträge: 65
Wohnort: Dachau
Programmiersprachen: PHP, Javascript und VB

BeitragVerfasst am: 18.01.2007, 22:25    Titel: Antworten mit Zitat

Ja halte ich auch für sehr wichtig. Vor allem, wenn man wie bei uns mit mehreren Usern an einem einzigen Projekt arbeitet.

Schön geschriebener Artikel übrigens.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
PhP0Kid
Profi-Benutzer


Anmeldedatum: 05.01.2007
Beiträge: 413
Wohnort: Ellwangen (nahe Aalen)
Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)

BeitragVerfasst am: 18.01.2007, 22:29    Titel: Antworten mit Zitat

Hab mir auch Mühe gegeben, danke =)
_________________
http://www.Julian-Stier.de | T-REx 2.2

Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008

Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
synapsis
Administrator


Anmeldedatum: 15.10.2006
Beiträge: 391
Wohnort: Nahe München
Programmiersprachen: C/C++, VB, (Java), PHP, JS, AJAX, Python
Compiler: gcc, MS VS2005 SE

BeitragVerfasst am: 19.01.2007, 00:08    Titel: Antworten mit Zitat

@Php0Kid
Äußerst nützlicher/guter Beitrag

Wir müssen auf jeden Fall bei unseren Projekten vorher den Stil weitestgehend festlegen, d.h. es muss ein kleiner Artikel geschrieben werden, welcher die endgültigen Stilvorlagen enthält und auch vorschreibt, welche Funktionen aus Gründen der Sicherheit nicht genutzt werden dürfen. Dabei schreibt man auch gleich vor, welchen Header eine Datei enthalten muss und welche Informationen dort drinstehen müssen. (Autoren, Zweck, Name, ....) Wenn du willst, kannst du das gerne übernehmen, du scheinst da ja recht fit zu sein. Wink

_________________
Pssst... Syncom.org Relaunch im Herbst 2008... bitte weitersagen Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PhP0Kid
Profi-Benutzer


Anmeldedatum: 05.01.2007
Beiträge: 413
Wohnort: Ellwangen (nahe Aalen)
Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)

BeitragVerfasst am: 19.01.2007, 17:25    Titel: Antworten mit Zitat

Klaro, ich kann ja mal Ideen zusammensammeln und dann ein etwas größeres Post verfassen!
_________________
http://www.Julian-Stier.de | T-REx 2.2

Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008

Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nubbel
Neuer Benutzer


Anmeldedatum: 19.07.2007
Beiträge: 7
Wohnort: Mosbach
Programmiersprachen: Deutsch, Englisch, Französisch, Spanisch

BeitragVerfasst am: 22.07.2007, 14:55    Titel: Antworten mit Zitat

Eins vorneweg: es gibt keine if-Schleifen und Standart ist sicher nicht das was du meinst.

Aber ich finde gut, dass du dir über solche Standards gedanken machst, auch wenn ich deine Konventionen nicht ganz so toll finde.

Ich habe mir auch einmal die Mühe gemacht und habe meine PHP-Coding-Standards veröffentlich: http://nicky.nubbel.info/2007/07/05/php-coding-standards/

_________________
Mein Blog: nicky.nubbel.info
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
PhP0Kid
Profi-Benutzer


Anmeldedatum: 05.01.2007
Beiträge: 413
Wohnort: Ellwangen (nahe Aalen)
Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)

BeitragVerfasst am: 22.07.2007, 22:20    Titel: Antworten mit Zitat

Okay, ich kenne deine Standards mittlerweile und finde sie persönlich eher ...

Meine oben genannten habe ich selber nie weiter verwendet und wie auch die anderen Threads ist hier alles ein wenig veraltet, weil nie jemand was neues bringt Wink
Ich halte mich eig. wenn möglich an die Pear-Standards, du kannst sagen was du willst Razz

_________________
http://www.Julian-Stier.de | T-REx 2.2

Fertiges ( 16.7.08 ):
* Julian-Stier.de, Blog - Juli/August 2008

Aktuelles ( 16.7.08 ):
* T-REx 2.3.0 - release 2008/2009
* GlobalIndustry - release 2008/2009
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Syncom.org Foren-Übersicht -> Interpretersprachen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Anhänge in diesem Forum nicht anhängen.
Du kannst Dateien in diesem Forum nicht herunterladen.



Powered by php B. B. © 2001, 2005 php B. B. Group
Template xabbBlue für php B. B. Foren - created by php b. b. styles
Modified by synapsis
Protected by CTracker