viele if-Abfragen
-
Hallo
Ich habe ein Programm geschrieben (mit Qt als GUI) und habe in einer Funktion relativ viele if-Abfragen:static bool start = false; if(start == true)//wenn auf den start Button geklickt wurde { ... if(ui.change->isChecked()) { if(v[wert].getAntwort() == getText()) { ... } } else { if(v[wert].getLösung() == getText()) { ... } } if(ui.checkBox->isChecked()) { v.erase(v.begin()+wert); } ... if(ui.checkBox->isChecked()) { if(v.size() <= 0) { results(); } } if(!ui.checkBox->isChecked()) { if(anzahl >= 10) { results(anzahl,richtig,start); } } if(start == true) { if(ui.change->isChecked()) { setchange(); } else { setv(); } } } else // wenn der Button das erste mal geklick wird { if(read_file()) { start = true; ui.checkButton->setText("Check"); ui.checkBox->setEnabled(false); ui.Edit->setEnabled(false); if(ui.change->isChecked()) { setchange(); } else { setv(); } ui.change->setEnabled(false); } }
Gibt es vlt eine alternative dafür? (Das Programm prüft halt immer ob eine Option eingestellt wurde (if(ui.change->isChecked()))
Danke
-
Du könntest das ganze etwas stauchen:
static bool start = false; if(start)//wenn auf den start Button geklickt wurde { //... if(ui.change->isChecked()) { if(v[wert].getAntwort() == getText()) { //... } } else { if(v[wert].getLösung() == getText()) { //... } } if(ui.checkBox->isChecked()) v.erase(v.begin()+wert); //... if(ui.checkBox->isChecked()) { if(v.size() <= 0) results(); } else { if(anzahl >= 10) results(anzahl,richtig,start); } if(ui.change->isChecked()) setchange(); else setv(); } else // wenn der Button das erste mal geklick wird { if(read_file()) { start = true; ui.checkButton->setText("Check"); ui.checkBox->setEnabled(false); ui.Edit->setEnabled(false); if(ui.change->isChecked()) setchange(); else setv(); ui.change->setEnabled(false); } }
Alternativen gibt es wohl keine, außer du schaffst es die Bedingungen umzustrukturieren.
-
ok vielen Dank
Aber ist das wenn man so viele if-Abfragen hat nicht schlechter style?
-
Das ist doch noch nicht viele.
Aber es geht ja schlecht mit weniger Abfragen oder ?
Insofern passt das schon.
-
Wenn es mehr werden sollte, würde ich mal State Charts in den Raum werfen:
z. B. aus boost:
http://www.boost.org/doc/libs/1_55_0/libs/statechart/doc/index.html
und
http://www.boost.org/doc/libs/1_55_0/libs/msm/doc/HTML/index.html
VG
Pellaeon
-
asdfasdfasdf schrieb:
Aber ist das wenn man so viele if-Abfragen hat nicht schlechter style?
Grundsätzlich kommt es darauf an ob es eine Alternative gibt.
Allgemein spricht wenig gegen viele if, wenn sie notwendig sind. Falls die Verschachtelungen zu tief werden sollte man nur überlegen ob eine Negation die Abfragetiefe vielleicht ändern kann, oder ob man Codeteile in Funktionen auslagert.
Bei längeren Code mit vielen if neige ich dazu, die Logik in kleinere Funktionen zu splitten.