mmofacts.com

Werde schön mein Code

gepostet vor 18 Jahre, 10 Monate von Mays
Ich habe mich nun mal daran gesetzt schönen Code zu schreiben.



Und muss sagen das ich schon recht schönen Code schreibe, vom einrücken und dem Zeug her.
Nur was ich nicht verstehe ist warum man bei Funktionen das { erst in die nächste Zeile schreibt und bei if net?
Hat sich das so eingebürgert oder hat das irgendeinen Sinn, den ich nur nicht erkenne?



Dann habe ich wenn ich eine Formular schreiben wollte das so gemacht
echo "";
echo "
echo "

dann gibt es da noch
echo "

...........
";
das gefällt mir aber nicht,

dann gibt es da doch noch so was, so weit ich weiß endet es mit doc, wie das ganze heißt weiß ich aber nicht mehr.
es ging irgendwie so
echo <<


>>;
oder so ähnlich, kann mir da jemand weiter helfen
gepostet vor 18 Jahre, 10 Monate von TheUndeadable
Zum if:

Ich schreibe die '{' beim if in eine neue Zeile

if ( a)
{
bla();
}

Einrücken per 4.

Wie wäre es mit

echo ( '....' );

echo ist übrigens eine Funktion, da kommt es in Klammern.
gepostet vor 18 Jahre, 10 Monate von Krisch
1. Grundsätzlich ist es übersichtlicher die { in die nächste Zeile zu schreiben, aber das verbraucht viele Zeilen. Deswegen machen viele eine Ausnahme, wenn es eine kurze Verzweigung ist. Zuviel Platz ist nämlich auch unübersichtlich.

2.
Original von PHP Manual

echo <<
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon no extra whitespace!
END;

3. Bei längeren HTML Blöcken würde ich den Parser deaktivieren. Ansonsten kannst du das mit einfachen Anführungszeichen machen.
gepostet vor 18 Jahre, 10 Monate von Kampfhoernchen
*winkt mit nem Templatesystem*

Egal wie du echos schreibst, es wird unübersichtlich. Deswegen gibts die Template-Systeme.
gepostet vor 18 Jahre, 10 Monate von KoMtuR
Original von Mays

dann gibt es da doch noch so was, so weit ich weiß endet es mit doc, wie das ganze heißt weiß ich aber nicht mehr.


Diese Dinger nennen sich Heredoc
gepostet vor 18 Jahre, 10 Monate von Amun Ra
Ich würde mir mal angewöhnen wo es geht, also eigentlich immer,
einfache Quotes zu nutzen.
Das ist um einiges schneller...
gepostet vor 18 Jahre, 10 Monate von Krisch
Naja, ich hab schon mehrere Benchmarks gesehen, da hiess es, dass man zwar einen kleinen Vorteil hat, aber die Zeit lieber in die Optimierung der Codelogik stecken sollte. Aber wenn man's sowieso macht ist das in Ordnung.
gepostet vor 18 Jahre, 10 Monate von Amun Ra
Ja, war an Mays gerichtet...

echo "";

echo "
echo "

Würd ich dann einfach mal so schreiben:

echo '

gepostet vor 18 Jahre, 10 Monate von Mays
erst mal danke


ich finde dieses heredoc einfach klasse und Templatesystem versteh ich noch nicht so ganz, daher lasse ich das erst mal, man muss langsam an die Sache gehen, erst mal muss ich das Andere können.


@rahq
für dich werde ich das ab jetzt tun.

Ich habe mir dabei nichts gedacht und da es für mich kein richtiger Code oder ein Zitat war habe ich es gelassen.

Aber warum ist das um einiges schneller, das versteh ich nicht, was ist schneller?
gepostet vor 18 Jahre, 10 Monate von Kampfhoernchen
Die ' sind schnell als ".

Grund:
Zwischen " und " guckt PHP, ob ein $var drin vorkommt, also muss er sich den String darin angucken. Bei ' und ' macht er das nicht, also ist das logischerweise schneller.
gepostet vor 18 Jahre, 10 Monate von knalli
Mir ist Heredoc so unsympatisch, dass ich ihn noch nie eingesetzt habe.

Entweder es ist nicht performant, oder es sieht m.M. nicht "gut" aus.. wie auch immer


Sofern man (super) strukturieren Code aufweisen kann (das fängt sicherlich bei Einrücken an, auch HTML!!, geht aber bis zur angesprochenen Codelogik), kann man schon punkten - sowohl bei Tests (Schule, Studium), als auch später bei anderen.

Nichts ist besser als fast selbsterklärender Code - Kommentierung gern willkommen.
gepostet vor 18 Jahre, 10 Monate von HaSkEeR
echo <<< END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon no extra whitespace!
END;

bei solchen heredocs kann man btw anstelle von END jedes mögliche wort als terminator verwenden, falls das aus dem text nicht ganz ehrvor geht...

echo <<< BEENDEN
Lorem ipsum
dolor sit amet
BEENDEN;

Das einzige Problem ist, dass solche heredocs ganz links ohne einrückung stehen müssen, deshalb verwende ich sie nicht...
gepostet vor 18 Jahre, 10 Monate von schokofreak
hmmm... solche Echos find ich hässlich!!!
Und ob die Klammern Oben unter Unten sind, ist aus meinen Augen irrelevant - es gibt wichtigeres für schönen Code.

Mal zwei beispiele von Codes
 

processLogin(userName, passWord) {
if(userName == null) return false;
if(password == null) return false;

if ((userName != "hans") || (passwort != "passwd") return false;

//login completed...
Update lastLogin to Now();
retreiveAllMessages();
sendmessageJavaScriptToClient();
..
..
..
return true;
}



 

isValidLogin(userName, password) {
boolean result = false;
if(userName != null) {
if(password != null){
if(userName == "hans") && (passwort == "passwd") {
result = true;
}
}
}
return result;
}
doLAfterLoginActions() {
boolean result = false;
if(Update lastLogin to Now()) {
if(retreiveAllMessages()) {
if(sendmessageJavaScriptToClient()) {
..
..
..
result = true;
}
}
}
return result;
}

processLogin(userName, passWord) {
boolean result = false;
if(isValidLogin(userName, password) {
result = doAfterLoginActions();
if(!result) {
doLogoff();
}
}
return result;
}



Merkpunkte:
- 1 Funktion = 1 Aufgabe: Entweder Login, oder AfterActions. NICHT Beides oder noch mehr
- 1 Funktion; 1 Return. Werden zu viele Schleifen benötigt, wurde die Aufgabe der Funktion nicht klar genug spezifiziert
- 1 Klasse = 1 Aufgabe: Eine Klasse macht entweder Login oder DB Zugriff; aber nicht beides
- Input Checks immer sauber durchführen
- auch bei unwahrscheinlichen Fehlerfällen auf diese Prüfen (beispielsweise ein Failure eines afterLoginActions; muss zwingend Logout bewirken).

Schlussendlich merkt man, dass jede Funktion die etwas zurückgeben kann, auch ausgewertet werden muss. Genauso bemerkt mann, dass man kaum noch Funktionen hat, welche länger als 10 Zeilen sind. Kaum noch klassen hat, welche mehr als 200 bis 300 Zeilen code Haben.
Und das ganze einfach nur lesbar ist :-)

Gruss

Auf diese Diskussion antworten