Hallo,
ich unterscheide jetzt einfach mal zwischen formeller und inhaltlicher Struktur. Kommen wir zuerst zur fomellen:
- ein konsequent verwendeter Coding-Standard
http://pear.php.net/manual/en/standards.php http://framework.zend.com/manual/en/...-standard.html
- Englische Bezeichnernamen für Variablen, Funktionen und Klassen wählen (oder zumindest konsequent eine Sprache favorisieren, kein Mischmasch)
- Pro Funktion oder Klasse, eine Datei. Hierbei wie erwähnt Vererbung mit einbauen.
Inhaltliche Aspekte wären:
- Doppelten Code vermeiden, diesen wenn möglich in einer Funktion oder Klasse zu abstrahieren.
- Top-Down statt Bottom-Up Programmierung. Ich programmiere also von oben nach unten (benötigte Klassen und ihre Schnittstellen herausarbeiten), anstatt ganz klein anzufangen (Formular-Feld xy überprüfen).
http://de.wikipedia.org/wiki/Top-Dow...ttom-Up-Design
Lies dir doch mal folgende Bücher durch, sehr sehr gute Bücher, leider auch nicht ganz billig:
Professionelle PHP 5-Programmierung
Du kannst dir mal das Inhaltsverzeichnis über Amazon anschauen.
Der pragmatische Programmierer
Bezieht sich aufs Programmieren allgemein, trotzdem viele wichtige Tipps. Gerade für Fragen "wie programmiere ich richtig".
Ich versuche jetzt nochmal deine direkten Fragen zu beantworten:
Zitat:
|
Zitat von Matze Wie habt ihr euern Stil gefunden? |
Mit den Jahren, meinen Coding-Stil bei PEAR.
Zitat:
|
Zitat von Matze Wo seht ihr in eurem Stil für Vor- und Nachteile? |
Aufgeräumter Code ist übersichtlicher. Ich finde Fehler schneller und habe das Gefühl, mein Code ist ordentlich (zB kann ich auch nicht Lernen, wenn mein Zimmer unaufgeräumt ist).
Zitat:
|
Zitat von Matze Wie läufts bei euch mit Objekten/Klassen? Benutzt ihr exzessiv für jede winzige Funktion eine Klasse? |
Nein, aber das lustige ist, oft ist es sinnvoll auch für kleine Aufgaben Klassen/Methoden zu verwenden. Du baust dadurch nebenher ein kleines Framework auf, das dir dauerhaft immense Arbeit erspart und so einzigartig wie man auf den ersten Blick glaubt, ist eine Funktion meistens nicht.
Zitat:
|
Zitat von Matze Was speichert ihr in einer Klasse? |
Niemals HTML, höchstens in einer display()- oder debug()-Methode.
Zitat:
|
Zitat von Matze Eine einzelne News oder alle News in einem Array? |
Eine News in der Klasse News, mehrere News in der Klasse NewsManager, welche wiederum von einer Manager-Klasse erbt, die als abstrakte Klasse oder Interface agieren könnte (Schnittstellenvorgabe, zB für load() oder save()).
Zitat:
|
Zitat von Matze Arbeitet ihr quasi funktionsorientiert mit Klassen? |
Was meinst du?
Zitat:
|
Zitat von Matze Beispiel News einfügen: Speichert ihr nur das Query in eurer Methode? Oder die ganzen Kontrollen? Baut ihr gar die if-Abfrage, ob der Submit-Button schon gedrückt wurde, in eine Klasse mit ein? |
Was von der Klasse sinnvoll erledigt werden kann, soll sie auch erledigen.
Ich übergebe dem NewsManager beim Bearbeiten einer neuen News also die ID der News und den Daten-Array (zB $_POST).
PHP-Code:
<?php
$oNewsManager = new NewsManager($oConnection);
if ($oNewsManager->update($_GET['id'], $_POST)) {
header(sprintf('Location: news/details.php?id=%u', $_GET['id']));
exit;
} else {
$oMessages = singleton('MessageQueue');
$oMessages->add('Die News konnten nicht aktualisiert werden.');
}
// ..
?>
Zitat:
|
Zitat von Matze 4 Zeichen einrücken oder 2? |
4 Leerzeichen. Warum kein Tab? Weil der Tab auf vielen System in anderer Breite dargestellt wird, man aber trotzdem oft manuell zeichengenau einrücken möchte was mit dem Tab schonmal nicht geht. Falls man dann Tab + Leerzeichen kombiniert und eine Tab-Breite auf einem anderen Editor länger/kürzer dargestellt wird, war das Einrücken für den Arsch.
Zitat:
|
Zitat von Matze ' oder "? |
Wahrscheinlich egal, ich benutze wann immer möglich ' - es ist eben ganz minimal schneller. " bietet ja nur den Vorteil, PHP-Variablen in einen String zu braten, was mir nicht gefällt, da unübersichtlich. Zur String-Verknüpfung verwende ich lieber sprintf().
Zitat:
|
Zitat von Matze Leerzeichen zwischen Vergleichen und Deklarationen oder nicht? |
Laut der beiden verbreitetsten Coding-Standards: Hinter Kontrollstrukturen (if, switch, ..) ein Leerzeichen vor der Klammer, hinter Funktions- oder Methodennamen nicht (siehe auch mein Coding-Beispiel oben).
Zitat:
|
Zitat von Matze Wo liegen die Vor- und wo die Nachteile? |
Du wirst dir selbst über den Unterschied von Kontrollstruktur und Funktion klar, aber auch hier liegt der Hund im konsequenten Durchziehen einer Linie begraben.
Zitat:
|
Zitat von Matze Wie sichere ich mein Script am besten ab? Wie, wie, wie ... |
Gegen Hacker? Kann ich pauschal nicht beantworten. Benutze für SQL-Statements immer mysql_real_escape_string() und sprintf(). Stehe damit denke ich sehr sicher da.