Single Exit Principle

Aufrufe: 853     Aktiv: 18.01.2021 um 09:21

0

Hi,

warum stimmen undconditional jump und exceptions? Verstehe das mit single-exit nicht....

Which of the following constructs may violate the single-exit principle of structured programming: Unconditional jump (goto) Exceptions (throw)

Vielen Dank!

Diese Frage melden
gefragt

Student, Punkte: 66

 
Kommentar schreiben
1 Antwort
1

Bei einer Funktion hast du immer eine Rückgabe, die du für gewöhnlich mit dem Schlüsselwort "return" einleitest.

int make(int n) {
    if (n > 10) return 1;
    else if (n < 10) return 2;
    else return -1;
}

int make(int n) {
    int value = -1;
    if (n > 10) value = 1;
    else if (n < 10) value = 2;
    return value;
}

Beim ersten Beispiel sieht du, dass mehrmals "return" aufgerufen wird, beim Zweiten nur einmal. Genau das bedeutet single-exit-principle: dass du GENAU eine Anweisung hast, mit der du die Funktion verlässt und nicht mehrere, wie im ersten Beispiel.

Mit "throw" könnte die Funktion vorzeitig terminieren, d. h. zusammen mit einem "return" am Ende, hast du dann insgesamt 2 exit-points.

int make(int n) {
    if (n < 0) throw new IllegalArgumentException(); // exit point
    else return 1; // exit point
}

Mit "goto" könntest du in deinem Progamm einfach an eine beliebige Stelle "springen", hast damit also auch wieder mehrere exit-points. Beides verstößt gegen das SINGLE-exit-principle!

Diese Antwort melden
geantwortet

Schüler, Punkte: 455

 

Achso, danke dir!!!

  ─   sayuri 18.01.2021 um 09:21

Kommentar schreiben