Hi jbg,
du hast ganz recht, allerdings ist es manchmal sinnvoller, Result am Funktionsanfang auf True und nicht auf False zu stellen. Das umzuschreiben würde einen Code teilweise unverständlich und umständlich machen, deshalb mache ich es so.
Was das goto angeht: Schön ist es nicht, aber manchmal doch recht sinnvoll. Der try..except..end-Block ist, das musst du zugeben, auch sehr viel eleganter also goto:
Code:
function Test(h: THandle): Boolean;
begin
try
if (h = INVALID_HANDLE_VALUE) then
raise EResultFalse.Create(''); //
Exception auslösen
except
on EResultFalse do begin
Result := False;
Exit;
end;
end;
end;
statt
Code:
function Test(h: THandle): Boolean;
label
resultfalse, toend;
begin
Result := False;
if (h = INVALID_HANDLE_VALUE) then
goto resultfalse;
// ...
goto toend;
resultfalse:
Result := True;
toend:
// ...
end;
Aber da die Kritik an dieser Methode immer größer wird: Ich werde mich nicht daran festbeißen, ich bestehe absolut nicht darauf, ihn durchzubringen.
MfG,
d3g