Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#1

Unpräzise Namensgebung bei TRectF.Empty und TRectF.IsEmpty ?

  Alt 25. Mai 2023, 10:16
Delphi-Version: 5
Hallo zusammen,

ich stolpere gerade über einen Konflikt bei den IsEmpty Routinen, welche so definiert sind:

Delphi-Quellcode:
class function TRectF.Empty: TRectF;
begin
  Result := TRectF.Create(0,0,0,0);
end;

function TRectF.IsEmpty: Boolean;
begin
  Result := (Right <= Left) or (Bottom <= Top);
end;
Das Problem ist, dass ich TRectF als Speicher für separate Left,Top,Right,Bottom benutze, welche nicht unbedingt ein Rechteck aufspannen.
Also könnte RectF( 0, 0, 0, 50 ) sein, somit die Fläche IsEmpty: JA, aber die Variable IsEmpty: NEIN ( aus meiner Sicht ).

Als Argument dafür sehe ich, dass es die Funktion TRectF.Empty gibt, welche (0,0,0,0) definiert, also würde ich IsEmpty für (0,0,0,0) erwarten.

Für meinen angedachten Fall würde ich die Funktion IsZero vorsehen,
in ähnlicher Weise wie dies bei TPointF und Anderen vorhanden ist, bei TRectF aber nicht:

Delphi-Quellcode:
function TRectF_Helper.IsZero : Boolean;
begin
    Result := SameValue(Left, 0.0) and SameValue(Top, 0.0) and SameValue(Right, 0.0) and SameValue(Bottom, 0.0);
end;

Wie seht Ihr das, ist Empty / IsEmpty vielleicht ein gar nicht so präziser Name wie ich immer dachte ?
Oder sollte die Funktion IsEmpty vielleicht sogar ein Ergebnis ergänzt um IsZero zurückgeben ?

Vielleicht sollten die Funktionen auch einfach nur anders heißen, um präzise zu sein, wie EmptySpace und IsEmptySpace ?

Bin ich jetzt einfach nur zu pedantisch, oder gibt es ein gutes Argument für IsEmpty ?
Immerhin sagt "TRectF" ja implizit aus, dass es um die Fläche von Rechtecken geht.

Keine Angst, ich will hier keinen Feature-Request starten, ich möchte nur wissen, wie man den Unterschied Empty/Zero am besten im Namen oder Funktionsweise beschreiben würde
Immerhin benutze ich TRectF ja als Speicher für nicht-Flächen, somit etwas außerhalb der Spezifikationen ...
  Mit Zitat antworten Zitat