Zitat:
PPS: Um den Rückgabewert einer Funktion zu setzen kann man entweder den Namen der Funktion verwenden oder das reservierte Wort Result.
Besser das Result, denn das Andere kann schonmal unübersichtlich werden.
Was wird hier wohl gerechnet?
Delphi-Quellcode:
var BöseGlobaleVariable: Integer;
function SinnloseFunktion: Integer;
begin
if BöseGlobaleVariable > 0 then
begin
BöseGlobaleVariable := BöseGlobaleVariable - 1;
SinnloseFunktion := SinnloseFunktion + 2;
SinnloseFunktion := SinnloseFunktion + SinnloseFunktion - 1;
end
else
SinnloseFunktion := 0;
end;
BöseGlobaleVariable := 10;
ShowMessage(IntToStr(SinnloseFunktion));
So wird es dann wohl verständlicher, wo der aktuelle Funktions-Wert und wo ein neuer Funktionsaufruf lauern.
Delphi-Quellcode:
function SinnloseFunktion: Integer;
begin
if BöseGlobaleVariable > 0
then begin
Dec(BöseGlobaleVariable);
Result := SinnloseFunktion + 2;
Result := SinnloseFunktion + SinnloseFunktion - 1;
end else
Result := 0;
end;
Aber eigentlich wollte ich dieses haben. war allerdings mit den "Funktionsnamen als Result" garnicht machbar ist.
Delphi-Quellcode:
function SinnloseFunktion: Integer;
begin
if BöseGlobaleVariable > 0
then begin
Dec(BöseGlobaleVariable);
Result := SinnloseFunktion + 2;
Result := Result + SinnloseFunktion - 1;
end else
Result := 0;
end;
OK, außer man führt das komische Ding, mit der unnötigen Variable wieder ein, aber auch da macht sich das Result veständlicher.
Delphi-Quellcode:
function SinnloseFunktion: Integer;
var
i: Integer;
begin
if BöseGlobaleVariable > 0
then begin
Dec(BöseGlobaleVariable);
i := i + SinnloseFunktion - 1;
end else
i := 0;
SinnloseFunktion := i;
// Result := i;
end;
Wobei man hier das Result ja direkt verwenden und sich deshalb eben diese zusätzliche Variable ersparen kann.
PS: So, ich klaue dir jetzt mal das Refactoring (falls du sowas besitzt) und nun bennene mal diese Funktionen um.
Wo wirst du wohl weniger Arbeit haben?
PSS: Wenn es zufällig eine gleichnamige Funktion, mit passender Signatur, in einer anderen
Unit gibt (die oben in Uses mit drin steht) und du vergißt auch nur einen Namen umzubenennen, dann war's daß, weil den Fehler suchst du erstmal eine Weile.