Code kürzer schreiben
Thorsten Steffen
- php
hio,
Ich hab irgendwann son "splin" bekommen meine Skripte möglichst kurz zu schreiben, und frage ich mich ab und zu, ist das auch Sinnvoll. Ein Beispiel dazu:
Anstatt
$matches = split("%",$errorMessageFormat);
array_shift($matches);
kann man genausogut auch
array_shift($matches = split("%",$errorMessageFormat));
schreiben und hat 1 Zeile gespart, nur macht das auch Sinn? Ich weiss, die Frage kommt etwas "seltsam" daher, ich möchte nur mal fragen wer für's und wider's kennt. Ich denke das einzige Prob könnte die Übersichtlichkeit sein, welche man durch gut dokumentierten Quelltext ausgleichen kann.
gl & hf
Thorsten
Hallo Thorsten,
Anstatt
$matches = split("%",$errorMessageFormat);
array_shift($matches);kann man genausogut auch
array_shift($matches = split("%",$errorMessageFormat));schreiben und hat 1 Zeile gespart, nur macht das auch Sinn?
Es macht IMHO nur von daher Sinn, da du eine Variable gespart hast, die zwangsläufig Speicher auf dem Server belegen würde. Ich gehe aber davon aus, dass du PHP nicht Riesenmengen an Daten verarbeiten lässt, so dass ich z.B. den Performanceunterschied für eher ziemlich gering halte. Das müsste man im Zweifelsfall allerdings messen.
Einen anderen Sinn als diesen könnte ich mir aber nicht vorstellen.
Grüße aus Darmstadt,
Benjamin
Hallo Thorsten,
Anstatt
$matches = split("%",$errorMessageFormat);
array_shift($matches);kann man genausogut auch
array_shift($matches = split("%",$errorMessageFormat));schreiben und hat 1 Zeile gespart, nur macht das auch Sinn?
Überleg mal:
Du sparst zwar Speicher und das Interpretieren einer Zeile und es sieht sehr elegant aus und nach einem fürchterlich fähigen Programmierer mit dem Talent zum absoluten Abstrahieren und einem Super- IQ von mindestens Einstein * Masse + Lichtgeschwindigkeit aus, aber weisst Du denn jetzt auch noch, wie dieser Satz anfing?
__________deshalb____________:
Wie gut ist das zu pflegen?
Wie kommt Du selbst nach ein paar Wochen des Vergessens mit einem solchen Programmcode zurecht?
*grinsend*
fastix
Hallo,
da hat es mal eine Programmiersprache gegeben, die hatte als Ziel, das gesamte Programm in eine einzige (rekursive) Funktion zu packen. Die musste ich in der Uni lernen.
Daran, dass ich sogar schon vergessen haben, wie sie heißt, kannnst Du ungefähr ablesen, wie oft ich sie dann später benutzt habe :--)
Andersherum:
Ein älterer fähiger Programmierer, der nochb in der Zeit der mechanischen Rechnenautomaten angefangen hat zu lernen und immer drangeblieben ist, hat mir mal gesagt:"Ein Programm muss man lesen können wie ein gutes Buch. Man fängt vorne an und wenn man hinten angekommen ist, weiß man genau, was passiert."
Ich finde den Satz gut und spendiere seitdem gerne mal einen Absatz, ein zusätzliches Leerzeichen (kost ja nix) oder auch einen Kommentar. Sogar saubere Formatierung habe ich mir angewöhnt (obwohl die Sprachen ja heute formatfrei sind). Das hat schon oft Fehler aufgedeckt.
Reicht das als Antwort?
Grüße
Tom
hio,
da hat es mal eine Programmiersprache gegeben, die hatte als Ziel, das gesamte Programm in eine einzige (rekursive) Funktion zu packen. Die musste ich in der Uni lernen.
hehe, das hatte ich nicht vor ;)
"Ein Programm muss man lesen können wie ein gutes Buch. Man fängt vorne an und wenn man hinten angekommen ist, weiß man genau, was passiert."
Dachte eigentlich immer das "Zeugs" liest sich von innen nach aussen und von rechts nach links ;) nene, weiss schon was du meinst.
Ich finde den Satz gut und spendiere seitdem gerne mal einen Absatz, ein zusätzliches Leerzeichen (kost ja nix) oder auch einen Kommentar. Sogar saubere Formatierung habe ich mir angewöhnt (obwohl die Sprachen ja heute formatfrei sind). Das hat schon oft Fehler aufgedeckt.
Reicht das als Antwort?
Klar, reicht das. Ich denke auch, das wesentliche liegt in den Kommentaren, und dort haben viele (auch ich) nachholbedarf. Nichts ist nerviger als zu kommentieren wenn man gerade am programmierfluss ist ;)
Mittlerweile setze ich auch das 1 oder andere Leerzeichen mehr ;)
Ich formatiere meinen Code auch immer, das hilft enorm beim lesen. Wobei mein grosses Problem ist, die ich nenne sie mal "allgemeinen Vorgaben" (z.b. PEAR) mir beim lesen irgendwie gegen den Strich gehen. Mir "erschliesst" sich nicht so ganz, warum eine Einrücktiefe von 4 das optimum sein soll. So formatierten Quellcode kann ich schlecht lesen, manchmal verschwindet der Zeilenanfang am rechten Bildschimrand, komisch ;) Auch Schleife oder Bedingungen lesen sich im PEAR-stil für mich enorm schlecht. Also hab ich mir ein eigenes Schema angewöhnt, mag sein, da ich von anderen Sprachen wie Basic oder Pascal komme es deswegen anders gewohnt bin.
Ich denke um zu meinem Beispiel zurückzukommen, das ganze ist logisch gesehen 1 Schritt, mit dem array_shift entferne ich nur das erste Element, das überflüssig ist, da es leer ist. Also denke ich wäre in 1 Zeile (+Kommentar) ok, andere Dinge lesen sich in teilschritten besser.
Der ganze Hintergedanken bei der Frage war letztendlich, ich hab bis vor ein paar Monaten immer gleich munter drauflosprogrammiert, lief auch meist recht gut. Der Code war immer mal was neues in sachen formatierung (also nur grobes Schema). Ich hatte dann mal eine recht grosse JS-Bibliotheke für ein Projekt entwickelt. Welches einige der DOM-Funktionen versucht in Browsern ab 4.x so gut wie möglich zu implementieren, lief gut. 2 Monate später wollte ich was ändern und bummm .... Da stand nun wo mein megageiler Code war auf einmal alles in hochchinesisch ;)
Versuche deswegen so viel Disziplin wie möglich reinzubekommen und dabei aber auch ein feeling zu bekommen was sind macht.
gl & hf
Thorsten
Grüße
Tom
Hallo Thorsten,
Anstatt
$matches = split("%",$errorMessageFormat);
array_shift($matches);kann man genausogut auch
array_shift($matches = split("%",$errorMessageFormat));
wenn, dann würde ich höchstens
array_shift( split("%", $errorMessageFormat) );
schreiben. Ob Du eine Variable und damit Speicherplatz sparst halte ich für ungewiss. Denn intern muss PHP das Ergebnis der split-Funktion ja auch irgendwo ablegen. Was die Lesbarkeit angeht, so muss man - denke ich - immer abwägen. Das Beispiel hier ist noch relativ einfach zu verstehen. In Perl könnte man sowas noch viel weiter abstrahieren. Und ab einem gewissen Abstraktionslevel stelle ich mir die Frage nach dem Sinn.
schreiben und hat 1 Zeile gespart, nur macht das auch Sinn? Ich weiss, die Frage kommt etwas "seltsam" daher, ich möchte nur mal fragen wer für's und wider's kennt. Ich denke das einzige Prob könnte die Übersichtlichkeit sein, welche man durch gut dokumentierten Quelltext ausgleichen kann.
Bevor Du unverständlichen Code schreibst und das dann durch Dokumentation ausgleichst solltest Du lieber gleich gut lesbaren Code schreiben. Es wurde ja schon gesagt, dass man ein Programm immer lesen können sollte. Der Meinung bin ich auch.
viele Grüße
Achim Schrepfer