[linux-l] Re: Händler für Linux-Notebooks
Steffen Dettmer
steffen at dett.de
Fr Feb 10 10:11:49 CET 2006
* Rocco Rutte wrote on Thu, Feb 09, 2006 at 07:46 +0100:
> * Steffen Dettmer <steffen at dett.de>:
>
> >Nochmal langsam, Volker, Rocco: ihr schreibt 100 Zeichen, weil das
> >Terminal "eh so breit" ist?
>
> Ich für meinen Teil: jein. Ich schreibe 100+ Zeichen, weil der Code für
> mich lesbarer wird.
>
> Kleines Beispiel. Statt
>
> int foo (void* ptr) {
> if (!ptr)
> return 0;
> if (!irgendwas)
> return 0;
> ...
> }
>
> schreibe ich mittlerweile
>
> int foo (void* ptr) {
> if (!ptr) return 0;
> if (!irgendwas) return 0;
> ...
> }
mmm... Würd in meiner Firma beides nicht durchs Code Review kommen, aber
da spielen immer Geschmack und Gewohnheit eine Rolle.
> if (!ptr) return 0;
ist IMHO ganz schlecht, weil man es nicht erweitern kann, ohne die
"Struktur" zu ändern. Schriebe man
if (!ptr) {
return 0;
}
Könnte man z.B. ein log und ein assert vor dem Return einfügen (das
return ist hier sowieso nicht ideal, aber gerade zur Parameterprüfung OK
ist; für !irgendwas aber schon eher falsch...). Dann sieht man im
Zeilenbasieren CVS log / annotate noch, das die Bedingung und das return
schon "alt" sind, vielleicht ein Test-Tag haben und daher möglicherweise
korrekt sind :)
Ich würde schreiben
struct fooArg;
int
foo(struct fooArg *bar)
{
int err = 0;
myBool somethingDone = myFalse;
/* Parameter checking */
if (bar == NULL) {
assert(bar != NULL);
reportError("foo(NULL)");
err = NULL_POINTER;
}
/* check if irgendwas succeeded, because then we don't need to
* do it again */
if (err == 0) {
if (!irgendwas) {
somethingDone = myTrue;
}
}
/* If something was done, we inform the bar owner about the new cold
* beer and that on bar something will be skipped.
* If something was not done yet, we prepare it to ensure that we can
* skip it next time. */
if (err == 0) {
if (somethingDone) {
assert(bar->toDo == ToDoEmpty)
err = skipSomething(bar);
} else {
err = prepareSomething(bar);
}
}
/* .... */
}
jetzt fehlen nur noch Moduleprefixe, aber vielleicht ist ja alles
statisch, dann wäre es bei uns erlaubt (aber nicht erwünscht wg.
Refaktorisierungen)
> Damit habe ich deutlich weniger rauschen,
Menschen leben von Rauschen... :-)
Es gibt Optimierung nach Ausführungsgeschwindigkeit und Codegrösse -
aber nicht nach Quelltextgrösse oder Zeilenzahl... Source-Code muss für
Lesbarkeit optimiert werden -- jetzt kann man sich natürlich herrlich
streiten, wann er lesbarer ist :)
> und kriege in der Höhe mehr drauf, während ich die Breite nutze (die
> eh schon da ist). Und da können schonmal Zeilen 100+ entstehen.
Und wie druckst Du das? Wird doch dann auch schnell schwierig, oder?
Na, wird wohl Geschmackssache sein.
oki,
Steffen
--
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.
Mehr Informationen über die Mailingliste linux-l