Wie nennt ihr eine Boolean Variable, die auf Eingabe prüfen soll, ob Schleife verlassen werden soll?
-
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.
KISSUnd 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?