Einzelnen Beitrag anzeigen

Dejan Vu
(Gast)

n/a Beiträge
 
#15

AW: Property -> Getter und Setter mit Parametern

  Alt 29. Jan 2015, 06:48
Ein Array oder eine StringList oder sonst eine Struktur, die über einen Index angesprochen werden kann. In diesem Fall könnte ich mir auch eine Name-Value-Liste oder ein Dictionary vorstellen.
Das hat ja dann meistens etwas mit Persistenz zu tun und -wupps- habe ich wieder Zuständigkeiten vermischt.

Und selbst wenn es nichts mit Persistenz zu tun hat, ist es unsauber, denn die Tatsache, das der Wert 'FooBar' an Stelle 3 im Array stehen soll, ist somit an mehreren Stellen definiert. Ausnahme: Das Array ist ein Ersatz für private Felder. D.h. im Getter/Setter steht nur der Zugriff auf das Array. Dann...Nun ja. Spart man keine Tipparbeit, sondern hat einen Mapper geschrieben.

Die Motivation des TE ist TIPPARBEIT SPAREN und nicht, Konstrukte für Index-Properties zu finden, die sinnvoll sind.

Ein case halte ich für ziemlich unwahrscheinlich - habe ich jedenfalls noch nie gesehen. Ist aber vollkommen irrelevant, denn der Getter ist ja gerade dazu da, die tatsächliche Implementierung zu kapseln.
Wer Tipparbeit sparen will, macht leider Folgendes (z.B.):
Delphi-Quellcode:
Procedure TMyClass.SetValue (Value : TSomeType;Index : Integer);
begin
  case Index of
    0 : StringValues[0] := Value.AsString;
    1 : IntegerValues[0] := Value.AsInteger;
  ...
end;
Das Beispiel stammt aus meinem uralten Code. Kapselung dient ja nicht dazu, schlechten Code zu verbergen. Sollte es zumindest nicht.


Delphi-Quellcode:
var
   x : TCustomSpeicherobjekt;
begin
   x := TCustomSpeicherobjekt.Create;
   x['Host'] := 'www.delphipraxis.net';
Das spart auch Tipparbeit.
'Host' wird ja noch an einer anderen Stelle verwendet (beim Lesen nämlich). Und wenn man sich beim 'Host' vertippt hat? Meckert der Compiler natürlich nicht und es führt zu Laufzeitfehlern, die schwer zu finden sind. Beispiel: 'Нost' vs. 'Host' (Das 'H' im ersten Host wurde von meinem russischen Kollegen getippt).

Delphi ist nun mal eine Programmiersprache, die von Tastaturherstellern gesponsort wird...

Geändert von Dejan Vu (29. Jan 2015 um 07:22 Uhr)
  Mit Zitat antworten Zitat