AW: Sinn einfacher Getter und Setter
Dem unten Gesagten kann ich voll zustimmen.
Bei solchen simplen Typen ist das auch mehr oder weniger Egal, aber
Delphi-Quellcode:
bei komplexen Assignments kann es erheblich Performance kosten wenn man immer nur blind kopiert, statt vorher auf Änderung zu Testen.
procedure TTestClass.SetTest3(const AValue: TMyComplexClass);
begin if (FTest3 <> AValue) then FTest3.Assign( AValue ); end; Um mir darum nicht jedes Mal Gedanken zu machen lege ich auch meistens standardmäßig Getter/Setter an, das ist Dank Ctrl-C und/oder dem MMX-Tool ja auch kein großes Tipp-Problem mehr. |
AW: Sinn einfacher Getter und Setter
Zitat:
|
AW: Sinn einfacher Getter und Setter
Danke für die Antworten und die rege Beteiligung. :thumb:
|
AW: Sinn einfacher Getter und Setter
Zitat:
|
AW: Sinn einfacher Getter und Setter
Zitat:
Aus dem Code des "Konsumenten":
Delphi-Quellcode:
wird im 1. Fall
Messias.Name := 'Jesus';
Delphi-Quellcode:
und nachh der Umstellung der Implemenierung auf Getter dann
Messias.FName := 'Jesus';
Delphi-Quellcode:
Das ist natürlich eine Veränderung des Binärcodes, aber kein Verhalten der "black box".
Messias.setName ('Jesus');
|
AW: Sinn einfacher Getter und Setter
Es geht aber nicht immer nur um Code Änderungen sondern auch möglicherweise um Binärkompatibilität.
|
AW: Sinn einfacher Getter und Setter
Get/Set scheint zunaechst unwichtig und kann auch trivial geloest werden.
Wenn Du Deine Programmstruktur allerdings feinfuehliger aufbaust und statt direkten
Delphi-Quellcode:
Interfaces verwendest, die Du im idealfall dann mittels Constructor Injection oder DI-container bereitstellst, musst Du somit Getter/Setter verwenden.
uses
Interfaces lassen diese direkten Feldvariablen nicht zu. Zum Beispiel
Delphi-Quellcode:
und
IAngestellter = Interface
Delphi-Quellcode:
Deine Klasse TFirma braucht Feldvariable TAngestellter.FName, verwendet aber schlankerweise nicht uses Angestellter sondern FAngestellter: IAngestellter.
TAngestellter = class(TInterfacedObject, IAngestellter)
Das Interface
Delphi-Quellcode:
laesst FAngestellter.Name aber nicht zu, sondern nur
FAngestellter
Delphi-Quellcode:
function FAngestellter.GetName: String;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz