AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tarifrechner

Offene Frage von "xsus"
Ein Thema von xsus · begonnen am 30. Okt 2011 · letzter Beitrag vom 31. Okt 2011
Antwort Antwort
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#1

AW: Tarifrechner

  Alt 30. Okt 2011, 21:01
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.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (30. Okt 2011 um 21:05 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz