schlechte angewohnheit?



  • EOP schrieb:

    volkard schrieb:

    Aber

    while(true)
    

    statt

    for(;;)
    

    ist nicht hübsch.

    Wieso?

    Weil der Arbeitgeber da gleich denkt "Au Weia, wieder so einer, der zu viel am Pascal-Topf genascht hat, alte C/C++-Bücher gelesen hat. Wenn der hier den lokalen Dialekt nicht spricht, wird er auch seine Algos nicht an die Sprache anpassen können oder gar kein Verständnis dafür haben, daß die gute Implemetierung auch von der Implemetierungssprache abhängt. Warum muß sowas immer mir passieren..."
    while(true) oder while(1==1) sind nicht falsch, aber eben nicht hübsch.

    #define ever (;;)
    


  • Ich find while(true) schöner.. vielleicht sollten wir mal eine Umfrage im NadrW Forum starten? 🤡



  • Athar schrieb:

    for(;­;­) und while(true) hatte ich eigentl. immer vertrauen in compiler optimierung, aber ty.

    Das hat nichts mit Performanz zu tun, for(;­;) ist einfach eine Sache von schönerem Stil™.

    Das beantwortet meine Frage auch noch nicht.

    Edit:
    Deine Antwort hat sich mit meinem 2. post überschnitten.

    Ich hab nie Pascal benutzt (genausowenig wie Basic), daher bin ich unbelastet.

    Wieso das "schönerer" Stil sein soll leuchtet mir trotzdem nicht ein.

    for(;;)
    

    erscheint mir da schon eher wie ein Missbrauch eines Sprschelements, da es erwartete Parameter nicht benutzt.
    Eher ein C-typischer Hack imho.



  • cooky451 schrieb:

    Ich find while(true) schöner..

    Ich auch.



  • for(;;) wird "forever" gesprochen, while(true) wirkt dagegen ziemlich unbeholfen. Solange wahr noch wahr ist, mache x? Bitte nicht.

    Allerdings ist das immer noch besser als while(1), was man leider auch in realen Projekten sieht.



  • Hatte auch immer while (true) benutzt. Es scheint aber allgemeiner Konsens zu sein, for (;;) zu nutzen, deshalb hab ich umgestellt. Konventionen finde ich gut, da passe ich mich manchmal gerne an.



  • EOP schrieb:

    Ich hab nie Pascal benutzt (genausowenig wie Basic), daher bin ich unbelastet.

    Oder Du hast zu alte Bücher gelesen oder von Leuten gelernt, die vor langer Zeit stehengeblieben sind.

    EOP schrieb:

    Wieso das "schönerer" Stil sein soll leuchtet mir trotzdem nicht ein.

    for(;;)
    

    erscheint mir da schon eher wie ein Missbrauch eines Sprschelements, da es erwartete Parameter nicht benutzt.
    Eher ein C-typischer Hack imho.

    for(;;) ist ein Idiom und heißt forever.
    while(true) hingegen ist die mißbräuchliche Verwendung, das sieht aus wie eine kopfgesteuerte Schleigfe, ist aber in Wirklichkeit eine Endlosschleife, weil die erwartete Bedingungsprüfung mit einem festen true weggeschummelt wurde.
    Tja, so könnte man es auch sehen.
    Da hilft nur eine Abstimmung.



  • volkard schrieb:

    Aber

    while(true)
    

    statt

    for(;;)
    

    ist nicht hübsch.

    Deine Ansichten werden immer dogmatischer.
    Du hängst Dich an Details auf die keiner kritischen Prüfung standhalten könnten.
    Du wirst alt.

    Schade um einen klugen Kopf von früher.



  • imho:
    for sollte eigentlich eine zählvsriable [(e)cx] intialisieren und dann ein loop machen
    - das wäre ne "zählschleife".

    wohingegen while
    :start
    mach was
    oder jmp ende
    jmp start
    :ende
    sein würde.

    Mit diesem Hintergrundwissen sollte while die angemessenere Lösung sein.

    und - ja, ich bin aus einem anderen Jahrhundert (-tausend). Wie wohl die Meisten hier.

    LOL, worum ging's eigentlich? 🙂



  • µ schrieb:

    Deine Ansichten werden immer dogmatischer.
    Du hängst Dich an Details auf die keiner kritischen Prüfung standhalten könnten.
    Du wirst alt.
    Schade um einen klugen Kopf von früher.

    In Sachen for(;;) war ich schon immer dumm, scheint mir.
    http://www.c-plusplus.net/forum/p321281



  • volkard schrieb:

    µ schrieb:

    Deine Ansichten werden immer dogmatischer.
    Du hängst Dich an Details auf die keiner kritischen Prüfung standhalten könnten.
    Du wirst alt.
    Schade um einen klugen Kopf von früher.

    In Sachen for(;;) war ich schon immer dumm, scheint mir.
    http://www.c-plusplus.net/forum/p321281

    Oder schon immer dogmatisch.

    Wobei auch der link deinen Standpunkt nicht überzeugender macht.
    Hat eher was von "Ich hab beschlossen, daß es so ist!".

    Sorry. Ich schätze dich, aber das ist Quatsch.



  • Es gibt auch Konventionen die besagen, dass Bezeichner von Konstanten ausschliesslich aus Grossbuchstaben bestehen. Folgst du denen?



  • volkard schrieb:

    µ schrieb:

    Deine Ansichten werden immer dogmatischer.
    Du hängst Dich an Details auf die keiner kritischen Prüfung standhalten könnten.
    Du wirst alt.
    Schade um einen klugen Kopf von früher.

    In Sachen for(;;) war ich schon immer dumm, scheint mir.
    http://www.c-plusplus.net/forum/p321281

    Es wäre einfach angebrachter, wenn du syntaktische Details nicht zum Idiom erheben würdest. Idiome sind mehr als das, aber z.B. weniger als Entwurfsmuster.



  • µ schrieb:

    Es wäre einfach angebrachter, wenn du syntaktische Details nicht zum Idiom erheben würdest. Idiome sind mehr als das, aber z.B. weniger als Entwurfsmuster.

    Idiome gibt es mehr als auf der C++-Idioms-Seite aufgelistet sind.
    http://en.wikipedia.org/wiki/Programming_idiom#Infinite_loop

    Aber ich hänge nicht an dem Wort, sondern an der Aussage. Nimm statt Idiom meinetwegen Sinneinheit, Begriff, Cluster oder ein einigermaßen passendes Wort aus der kognitiven Psychologie.


  • Mod

    EOP schrieb:

    imho:
    for sollte eigentlich eine zählvsriable [(e)cx] intialisieren und dann ein loop machen
    - das wäre ne "zählschleife".

    Aber hier irrst du: for ist in C++ keine Zählschleife wie in Ponyhofsprachen wie Pascal und Basic, sondern ein sehr mächtiges Kontrollflusssteuerungselement, welches unter anderem auch als Zählschleife gebraucht werden kann. Zeige, dass du dies verstehst, indem du for (;;) benutzt.



  • würdet ihr sagen das:

    for (int i = 0; i<12345; i++) {..}
    for (int i = 10; i<54321; i++) {..}
    

    ist schlechter als:

    int i; 
    for (i = 0; i<12345; i++) {..}
    for (i = 10; i<54321; i++) {..}
    

    weil i 2 mal in der for "funktion" (hat ja nicht ganz die schreibweise einer funktion) als lokale variable erstellt wird? oder spielt es keine rolle?



  • Was soll das dämliche Geschwätz?
    Nehmt die Hinweise und Tips der erfahreneren Programmierer doch einfach an oder lasst es bleiben.

    Intuitiv hätte ich selber wohl auch "while(true)" benutzt (wobei bei mir noch nie ein Fall aufgetreten ist, wo ich es tatsächlich verwendet habe), aber ich nehm den Hinweis auf das ideom gern zur Kenntniss.

    Mir ist nicht klar was es zu nörgeln gibt wenn andere ihr Wissen teilen.

    P.S.: @Halozination
    Ich würde die Variante mit lokaler Definition bevorzugen.



  • Wenn schon dann so 😃

    😃

    #include<iostream>
    
    int main()
    {
    	for(;;)
    	{
    		std::cout << "vermeide schlechte Angewohnheiten. " << std::endl;
    		std::cout << "NoBody is perfekt " << std::endl;
    		std::cout << "denglish" << std::endl;
    		if( 1 )
    			std::cout << "c++ the best once language" << std::endl;
    		goto end;
    	}
    	end:
    	std::cout << "der Letzte macht das Licht aus" << std::endl;
    }
    

    oder doch nicht 😉



  • Wo sind die lausigen Codetags? 😡



  • f.-th. schrieb:

    Wo sind die lausigen Codetags? 😡

    Ich war mal so frei, sie zu ergänzen 😃

    @Topic: Ich finde, über den Unterschied zwischen for(;; ) und while(true) zu diskutieren ist eher eine Frage des persönlichen Stils als des praktischen Nutzens. Im Endeffekt wird bei beiden das selbe Ergebnis herauskommen - eine Endlosschleife.
    Im praktischen Einsatz sind mir echte Endlosschleifen eher selten untergekommen - idR hat man eine scheinbare Endlosschleife, deren Abbruchbedingung irgendwo innen drin hinter einem if(...)break; versteckt ist. Aber wer hat, kann ja gerne mal ein praktisch relevantes Beispiel für eine (bewußt erzeugte) Endlosschleife vorführen.


Anmelden zum Antworten