[linux-l] Re: do{ . } while (0)

Oliver Bandel oliver at first.in-berlin.de
Do Nov 24 10:48:19 CET 2005


On Thu, Nov 24, 2005 at 07:52:34AM +0000, Rocco Rutte wrote:
> Hi,
> 
> * Jan-Benedict Glaw [05-11-24 00:01:48 +0100] wrote:
> >On Wed, 2005-11-23 23:51:35 +0100, Oliver Bandel 
> ><oliver at first.in-berlin.de> wrote:
> 
> >>{}
> >>ist ein Block in C.
> >>Man kann am Anfang jedes Blockes auch lokale Variablen definieren...
> >>...wissen übrigens die wenigsten, weshalb sie das lokale Definieren
> >>von Variablen als "++" von C++ darstellen (im ggs. zu C) ;-)
> 
> >...und viele derer, die es wissen, benutzen es wissentlich nicht. Ich
> >finde es ganz schön, wenn man einmal, am Anfang der Funktion, sieht,
> >welche Variablen benutzt werden. Mal schnell on the fly noch ein paar
> >weitere benutzen zu können ist nett, erhöht aber IMHO nicht die
> >Lesbarkeit.
> 
> NACK, weil es durchaus Situationen gibt, in denen man das will. Wenn man 
> längere Funktionen hat im Sinne von "passt nicht auf einmal auf den 
> Schirm",

Sollte man ja vermeiden, solche Mammut-Funktionen zu schreiben.
DEK meint ja: Jede Funktion sollte ja nicht länger sein, als
daß sie auf eine Seite passt. :)


> dann kann das Feature praktisch sein, wenn man die Variable 
> lokal in einem Block definiert, der nur selten ausgeführt wird, statt 
> sie global in der ganzen Funktion sichtbar zu machen. Dann kann man 
> nämlich auch lange mit Suchen und Zweifeln verbringen, wieso Variable XY 
> jetzt überhaupt gebraucht wird.

Naja... Sonderfall eben.
Man sollte eher versuchen die Funktionen zu verkürzen,
soweit halt möglich.



> 
> Oder wenn man in einer von X case-Anweisungen mal eine Variable braucht, 
> macht es mehr Sinn, IMHO, da einen Block zu nehmen statt sie in der 
> ganzen Funktion zu haben.

Hmhhh. Sollte dies vorkommen, würde es da Sinn machen.
Ohne zusätzliche Kommentare aber im Code, die den Block
nochmals explizit aufzeigen, wird das IMHO nicht übersichtlicher.
Man könnte doch auch eine tmp_case_var ganz oben definieren.

Naja, hängt schon ein bischen von den anderen gegebenheiten ab.

In seltenen Sonderfällen mag es durchaus mal helfen,
ind er Regel ist es aber eher nicht zu empfehlen, IMHO.

Aber kommt es denn vor, daß man in case-Anweisungen extra Variablen braucht?

Hätte man das nicht anders lösen können?

Naja, ohne konkreten Code wird diese Diskussion eh nicht
weiter führen, aber selbst dann ist ja manches auch
Geschmacksfrage. ;-)

Aber Extra-Blöcke im Code sollte man auf jeden Fall
mit zusätzlichen Kommentaren versehen!

Gruß,
   Oliver



Mehr Informationen über die Mailingliste linux-l