Wie nennt ihr eine Boolean Variable, die auf Eingabe prüfen soll, ob Schleife verlassen werden soll?



  • muemmel schrieb:

    Hi,

    was spricht gegen Abbruch, Weiter, IsEnde...

    Gruß Mümmel

    Die Tatsache, dass Abbruch und Weiter auf Englisch break und continue heißen, welche schon 2 reservierte Schlüsselwörter sind, und IsEnde Denglisch ist.



  • bool quit;
    while(!quit) {
    }
    


  • 314159265358979 schrieb:

    muemmel schrieb:

    ...was spricht gegen Abbruch, Weiter, IsEnde...

    Die Tatsache, dass Abbruch und Weiter auf Englisch break und continue heißen, welche schon 2 reservierte Schlüsselwörter sind, und IsEnde Denglisch ist.

    Wie du schon in anderen Threads gelesen hast gibt es durchaus auch Gründe für deutschen (oder gar in Teilen denglischen) Code.

    Bei uns zum Beispiel wäre die umständliche Suche nach englischen Fachbegriffen unnötige Zeitverschwendung. Zum einen wird wohl innerhalb der nächsten Jahre (eher Jahrzehnte) keiner eingestellt der nicht wenigstens Deutsch kann, zum zweiten schreiben wir Software ausschließlich für den deutschsprachigen Raum, zudem stammen unsere Begriffe nicht aus einem Bereich in dem eine Seite wie z.B. leo oder ähnliches eine sinnvolle Übersetzung findet. Wozu sollten wir unnötigerweise einen Übersetzer in Anspruch nehmen, oder uns Wörter zusammen glauben die so mit Sicherheit im Englischen niemand verwendet?

    Eine Ausnahme von dieser Regel sind Begriffe die eigentlich nur in englisch verwendet werden (z.B. bei WPF MVVM: Model, View, ViewModel), da wird auch bei uns auf das englische zurück gegriffen, weil man dazu leichter Informationen im Netz findet. Das führt zwar zu denglischen Begriffen (z.B. KontaktView), aber das hält sich zum Glück stark in Grenzen.



  • Benutzt doch einfach goto. Ein Name für die Sprungmarke findet sich doch viel einfacher.



  • ... klar!! GOTO vernichtet alle Probleme und ist der Heilsbringer schlechthin!!



  • Hi,

    deutsche Begriffe haben den Vorteil, dass sie besser aus dem Quelltext hervorstechen.

    Gruß Mümmel



  • muemmel schrieb:

    deutsche Begriffe haben den Vorteil, dass sie besser aus dem Quelltext hervorstechen.

    Wasn quatsch... das sind variablen wie alle anderen auch und führen ausschliesslich zu denglischen Qeullcode... wems gefällt solls machen.

    Ansonsten nenn die Variable nach der Funktion. Was sollen immer diese a, b, c, x3 etc. Variablen. Da versteht doch keiner worum es geht...



  • eingabeNochmal schrieb:

    hustbaer schrieb:

    @David W
    Das ist hoffentlich nicht ein Beispiel für wie man es "gut" machen könnte ... ?

    Genau das habe ich mich auch gefragt.
    Ich finde den Code schlecht, der Code im ersten Posting ist viel kürzer, hat kaum performancefressende Methodenaufrufe und ist auch ansonsten schlanker.
    Außerdem ist die Methode IsValidInput() nicht definiert.
    Gleiches gilt für OnIsPassed() und OnIsFailed()

    Urprünglicher Code:

    int eingabe; 
    bool b; 
    do{ 
      b = false, 
      liesEingabe(); 
    
      switch(eingabe){ 
        richtig_1:... 
        richtig_2:... 
        falsch: printf("Falsche eingabe, nochmal"); 
                b = true; 
    } while (b);
    

    Meine Variante als pendant:

    while (!IsValidInput(input)) 
    { 
        Console.WriteLine("Falsche eingabe, nochmal"); 
    }
    

    mein Code ist kürzer, übersichtlicher und hält sich an das Single Responsibility Principle

    Achja, und ich habe das OnIsPassed sowie OnIsFailed als Event Invocator gesetzt, dann schmeißt man die Console.WriteLine raus und kann es auch in nicht Consolen Applikationen verwenden (Die Consolen Ausgaben habe ich nur aus dem printf übernommen).
    Das das switch im IsValidInput steckt muss ich extra erwähnen? Nahm an hier denkt man etwas mit. Der Ursprungscode ist auch unvollständig
    Das Hauptproblem ist nunmal das eine Methode die Vailiert, erneute eingaben abfragt und zudem noch ausgaben tätigt einfach viel zu viel macht, Clean ist das bei weitem nicht mehr.

    //Dazu
    Ich würde sogar die Architektur in frage stellen, warum ist die Ausgabe und die Validierung in der Selben Klasse, das gehört getrennt sodass man es wiederverwenden, austauschen sowie Mocken kann.
    Sowas ist doch eigentlich selbstverständlich.



  • eingabeNochmal schrieb:

    Wie nennt ihr eine Boolean Variable, die auf Eingabe prüfen soll, ob Schleife verlassen werden soll?

    BertramVonFallersleben



  • @David W

    mein Code ist kürzer, übersichtlicher und hält sich an das Single Responsibility Principle

    Jain. Single Responsibility ist gut, kurz und übersichtlich ist auch gut. Gegen das Auslagern der Validierungs-Funktion hab ich auch gar nichts einzuwenden.

    Bloss funktioniert dein Code nicht (weil nirgends neuer Input eingelesen wird, die Schleife wird also bis zum Abbruch den selben ungültigen Input validieren), und der Name "ValidateInput" ist mMn. auch denkbar übel.

    Achja, und ich habe das OnIsPassed sowie OnIsFailed als Event Invocator gesetzt, dann schmeißt man die Console.WriteLine raus und kann es auch in nicht Consolen Applikationen verwenden (Die Consolen Ausgaben habe ich nur aus dem printf übernommen).

    Die OnIsPassed/OnIsFailed sind - so lange sie nicht gebraucht werden - einfach nur hoffnungslos overengineert.
    Das von dir erwähnte Auslagern des Console.WriteLine() Aufrufs in einen solchen Handler macht nichts übersichtlicher (ganz im Gegenteil), und kann eigentlich nur mit "because I can" erklärt werden.

    Es wird sicher Fälle geben wo sowas alles Sinn macht, aber nicht in diesem einfachen Beispiel.

    //Dazu
    Ich würde sogar die Architektur in frage stellen, warum ist die Ausgabe und die Validierung in der Selben Klasse, das gehört getrennt sodass man es wiederverwenden, austauschen sowie Mocken kann.
    Sowas ist doch eigentlich selbstverständlich.

    Nein, ist nicht selbstverständlich.
    Nicht jedes Programm muss zu einem unübersichtlichen overengineerten Behemoth werden.
    KISS



  • break/continue 😃



  • pyhax schrieb:

    bool quit;
    while(!quit) {
    }
    

    quit würde ich auf den ersten Blick als Programmende interpretieren.
    quit ist also kein gutes Wort.



  • "quit" halte ich für schlecht, weil es "aufgeben" bedeutet.
    Wenn man eine Variable "quit" nennt, und dann auf true setzt wenn die Eingabe korrekt war, dann passt da mMn. was nicht.

    Ich würde mit dem lokalen Namen "quit" aber nicht "Programm beenden" assoziieren, so lange er nicht in main() auftaucht.



  • hustbaer schrieb:

    @David W

    mein Code ist kürzer, übersichtlicher und hält sich an das Single Responsibility Principle

    Jain. Single Responsibility ist gut, kurz und übersichtlich ist auch gut. Gegen das Auslagern der Validierungs-Funktion hab ich auch gar nichts einzuwenden.

    Bloss funktioniert dein Code nicht (weil nirgends neuer Input eingelesen wird, die Schleife wird also bis zum Abbruch den selben ungültigen Input validieren), und der Name "ValidateInput" ist mMn. auch denkbar übel.

    Achja, und ich habe das OnIsPassed sowie OnIsFailed als Event Invocator gesetzt, dann schmeißt man die Console.WriteLine raus und kann es auch in nicht Consolen Applikationen verwenden (Die Consolen Ausgaben habe ich nur aus dem printf übernommen).

    Die OnIsPassed/OnIsFailed sind - so lange sie nicht gebraucht werden - einfach nur hoffnungslos overengineert.
    Das von dir erwähnte Auslagern des Console.WriteLine() Aufrufs in einen solchen Handler macht nichts übersichtlicher (ganz im Gegenteil), und kann eigentlich nur mit "because I can" erklärt werden.

    Es wird sicher Fälle geben wo sowas alles Sinn macht, aber nicht in diesem einfachen Beispiel.

    //Dazu
    Ich würde sogar die Architektur in frage stellen, warum ist die Ausgabe und die Validierung in der Selben Klasse, das gehört getrennt sodass man es wiederverwenden, austauschen sowie Mocken kann.
    Sowas ist doch eigentlich selbstverständlich.

    Nein, ist nicht selbstverständlich.
    Nicht jedes Programm muss zu einem unübersichtlichen overengineerten Behemoth werden.
    KISS

    Und alternative Codevorschlaege von dir sind dann?
    Bisher ist das uebliche passiert was immer passiert: Jemand postet eine Idee und was wird gemacht? Es werden erstmal direkt Fehler diskutiert, rumgemosert und genoelt. Viel besser waere es doch zu sagen: "Ok ich hab mir dein Code angesehen diverse Sacheng efallen mir nicht, ich haette da folgende Codeverbesserungen". Ich hab im Thread von dir bisher noch keine gefunden?



  • eingabeNochmal schrieb:

    Wie nennt ihr eine Boolean Variable, die auf Eingabe prüfen soll, ob Schleife verlassen werden soll?

    int eingabe;
    bool b;
    do{
      b = false;
      eingabe = liesEingabe();
     
      switch(eingabe){
        richtig_1:...
        richtig_2:...
        falsch: printf("Falsche eingabe, nochmal");
                b = true;
    } while (b);
    

    Solche Flags vermeide ich generell. Das geht hier ja auch mit einer Endlosschleife und break bei korrekten Eingaben.



  • krümelkacker schrieb:

    eingabeNochmal schrieb:

    Wie nennt ihr eine Boolean Variable, die auf Eingabe prüfen soll, ob Schleife verlassen werden soll?

    int eingabe;
    bool b;
    do{
      b = false;
      eingabe = liesEingabe();
     
      switch(eingabe){
        richtig_1:...
        richtig_2:...
        falsch: printf("Falsche eingabe, nochmal");
                b = true;
    } while (b);
    

    Solche Flags vermeide ich generell. Das geht hier ja auch mit einer Endlosschleife und break bei korrekten Eingaben.

    Also ein break², dass switch und schleife verlässt?



  • ... Unterweiser in der Ausbildung pflegte immer zu sagen:

    Mein erster Unterweiser schrieb:

    Weisst ich nicht mehr weiter, nutz ich einen Schlater!



  • Mein.. schrieb:

    ... Unterweiser in der Ausbildung pflegte immer zu sagen:

    Mein erster Unterweiser schrieb:

    Weisst ich nicht mehr weiter, nutz ich einen Schlater!

    Wippschalter, Schiebeschalter oder Lichtschalter?


Anmelden zum Antworten