Stilfrage
-
Hallo,
ich hab mal eine Frage: Welche von beiden Versionen findet ihr lesbarer/stilvoller?int a = 0, b = 1; do b *= a++ + 1; while(a < k);oder
int a = 0, b = 1; do { b *= a + 1; a++; } while(a < k);
-
die zweite Variante
-
Weder noch.
Weil while bei while-Scheife und do-Schleife so anders sind, aber so gleich aussehen, wenn sie allein auf einer Zeile stehen, entwerte ich das while von do immer so:
int a = 0, b = 1; do { b *= a + 1; a++; } while(a < k);Deswegen brauche ich bei do-Schleifen die Klammern immer, auch wenn nur eine Zeile im Schleifenkörper ist.
-
Spricht etwas gegen
for(a = 2; a <= k; ++a) { b *= a; }? Es ist ja nicht so, dass b *= 1; im ersten Durchlauf wirklich nötig wäre.
-
Ich benutze irgendwie nie ein
do-whileund setze stattdessen alles alsforoder einfach nurwhileum. Die Schleifen sind sehr oft nur wenige Zeilen, meistens sogar nur eine Zeile lang. Dann ist es schön, wenn die Bedingungen direkt am Anfang stehen und nicht erst am Ende.Das ist meine persönliche Meinung.

-
/rant/ schrieb:
Ich benutze irgendwie nie ein
do-whileund setze stattdessen alles alsforoder einfach nurwhileum. Die Schleifen sind sehr oft nur wenige Zeilen, meistens sogar nur eine Zeile lang. Dann ist es schön, wenn die Bedingungen direkt am Anfang stehen und nicht erst am Ende.Das ist meine persönliche Meinung.

Also machste gelegentlich
tuwas; while(bedingung) { tuwas; }statt der äquivalenten Form
do { tuwas; }while(bedingung);Das würde mich mehr nerven.
-
Nein, volki

Repetition ist ein viel grösseres Übel, welches ich nicht in Kauf nehme. Erstaunlicherweise kommt das aber irgendwie fast nie vor? Vielleicht programmiere ich zu abgedrehte Dinge?

Ich neige hingegen dazu, die for-Schleifen sehr gefüllt zu programmieren, also nicht nur Bedingungen oben reinzupacken. Asche auf mein Haupt.
-
/rant/ schrieb:
Repetition ist ein viel grösseres Übel, welches ich nicht in Kauf nehme. Erstaunlicherweise kommt das aber irgendwie fast nie vor? Vielleicht programmiere ich zu abgedrehte Dinge?

Ist normal. Kommt bei mir auch fast nie vor. Könnte zwischen goto und dynamic_cast liegen. Da muß ich mal drauf achten.
Hier ist ein Beispiel://Zeigt den integer x dezimal an. Falschrum zwar, aber darum gehts gerade nicht. do { cout<<char('0'+x%10); x/=10; }while(x!=0);Hier sorgt die do-Schleife dafür, daß die 0 auch als 0 angezeigt wird und nicht einfach gar nicht angezeigt wird. Ich muß zugeben, daß auch ich jahrelang das immer mit if/while anging. Seit dieser Lösung denke ich auch bei anderen Problemen häufiger mal an do.