Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#12

AW: Verständnisfrage zu Exit

  Alt 8. Okt 2020, 18:11
Aber in der Situation ist das Exit nicht (zwingend) erforderlich, da die Routine ohne das Exit zum gleichen Ergebnis führen würde.

Schreibtechnisch wird also ein Result := 1 durch Exit(1) ersetzt.
Da finde ich die Zuweisung des Rückgabewertes an Result deutlich intuitiver als ein Exit, auch wenn es letztlich zum gleichen Ergebnis führt.

Exit nutze ich persönlich nur, wenn ich in 'ner Fehlersituation (also im Exceptblock eines Trys) aus 'ner Routine raus muss und damit sicherstellen will, das, egal, was später noch in 'ner Routine implementiert wurde, die Routine beendet wird.

Aber in 'ner If-else-if-Kasskade mit Exit auszusteigen, obwohl die Logik so implemtiert ist, dass das Exit nicht erforderlich ist, find' ich persönlich eher befremdlich.
Delphi-Quellcode:
function Test : Integer;
begin
  if a then begin
    Exit(1);
  end else
  if b then begin
    Exit(2);
  end else
...
  if z then begin
    Exit(26);
  end;
  // Jahre später wird in der Routine eine Änderung nötig, z. B. sowas:
  if (Result > 20) and (Result < 23) then begin
    // Mit Exit haben wir nun ein Problem, vor allem dann, wenn es nicht so offensichtlich ist, wie hier im Beispiel.
    // Mit der Nutzung von Result wäre es aber kein Problem.
  end;
end;
Und:

Wenn man Code nur intuitiv betrachtet und daraus Schlüsse zieht, kann man schonmal deutlich schiefliegen. Da ziehe ich die grundsätzliche Auswertung des Quelltextes doch vor.

Oder das ganze mal mit Case:
Delphi-Quellcode:
function Test(i : Integer) : Integer
begin
  case i of
    1 : Exit(1);
    2.. 10 : Exit(2);
   11..100 : Exit(3);
  else
    Exit(42);
  end;
end;
statt:
Delphi-Quellcode:
function Test(i : Integer) : Integer
begin
  case i of
    1 : Result := 1;
    2.. 10 : Result := 2;
   11..100 : Result := 3;
  else
    Result := 42;
  end;
end;
Geht beides, Variante 2 ist mir da aber deutlich lieber.
  Mit Zitat antworten Zitat