Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Code strukturieren! Wie macht man es richtig .. (https://www.delphipraxis.net/122145-code-strukturieren-wie-macht-man-es-richtig.html)

Daniel 10. Okt 2008 09:05

Re: Code strukturieren! Wie macht man es richtig ..
 
Verifizieren kann man sie und man könnte ein Event auslösen - auch oft ein guter Grund wenigstens für Setter.

EWeiss 10. Okt 2008 09:23

Re: Code strukturieren! Wie macht man es richtig ..
 
Also würdet ihr lieber ein property verwenden anstelle der von mit gewählten funktion.
Zumindest hätte ich mir dann einiges an code gespart und muss nicht alles doppelt deklarieren.

Reicht dann diese eine property zeile oder muss ich zusätzlich noch Funktionen
einbauen mit dem ich den aktuellen status von FGetCaptionFontHeight erfrage ?
Nur dann hätte ich nichts gewonnen.

gruss Emil

DeddyH 10. Okt 2008 09:31

Re: Code strukturieren! Wie macht man es richtig ..
 
Bei einer Property hast Du mehrere Möglichkeiten:
Delphi-Quellcode:
private
  FBlubb: TBlubb;
...
public
  property Blubb: TBlubb read FBlubb write FBlubb;
Die einfachste: indirekter Zugriff auf das private Feld FBlubb sowohl lesend als auch schreibend.

Delphi-Quellcode:
private
  FBlubb: TBlubb;
  procedure SetBlubb(const Value: TBlubb);
...
public
  property Blubb: TBlubb read FBlubb write SetBlubb;
Lesender Zugriff immer noch indirekt, schreibender über einen Setter. Im Setter kann man Gültigkeitsprüfungen vornehmen und entsprechend reagieren.

Delphi-Quellcode:
private
  FBlubb: TBlubb;
  function GetBlubb: TBlubb;
  procedure SetBlubb(const Value: TBlubb);
...
public
  property Blubb: TBlubb read GetBlubb write SetBlubb;
Lesender Zugriff über den Getter, schreibender über den Setter. Im Sinne der OOP ist dies der "amtliche" Weg (gerade in der Hinsicht auf andere Sprachen als Delphi). Ich persönlich spare mir eine Getter-Methode aus Faulheitsgründen, da sie IMO keinen echten Mehrwert bringt.

[edit] Nachtrag: durch Weglassen von write bzw. read kannst Du eine Property zusätzlich noch als Read-/Write-Only definieren [/edit]

Daniel 10. Okt 2008 09:38

Re: Code strukturieren! Wie macht man es richtig ..
 
Eine Getter-Methode erlaubt Dir eine sog. "Lazy-Initialization".
Angenommen, Du hast "teure" Daten im Speicher, brauchst diese aber entweder nicht sofort oder aber nicht immer. Dann kann Dir eine Getter-Methode helfen, diese Daten erst dann zu holen / zu erzeugen, wenn sie tatsächlich benötigt werden.

DeddyH 10. Okt 2008 09:41

Re: Code strukturieren! Wie macht man es richtig ..
 
OK, das Argument kann ich gelten lassen.

Daniel 10. Okt 2008 09:43

Re: Code strukturieren! Wie macht man es richtig ..
 
Zitat:

Zitat von DeddyH
OK, das Argument kann ich gelten lassen.

:kiss:
:mrgreen:

DeddyH 10. Okt 2008 09:44

Re: Code strukturieren! Wie macht man es richtig ..
 
Du bist sooo gut zu mir :oops: :mrgreen:

EWeiss 10. Okt 2008 10:45

Re: Code strukturieren! Wie macht man es richtig ..
 
Danke für eure Informationen werd dann auf property umsteigen bei einigen Funktionen
Das erparrt mir einiges an Tip arbeit.

Zumindest bei denen wo es nur um eine variable abspeichern/Lesen geht..

gruss Emil

Andreas H. 10. Okt 2008 11:55

Re: Code strukturieren! Wie macht man es richtig ..
 
Ja,

und die IDE unterstützt Dich Dabei auch noch. Einfach die Property definieren und über Klasse vervollständigen werden Getter und Setter automatisch eingefügt.

(edit: bei bds2006 jedenfalls :roll: )

EWeiss 10. Okt 2008 23:11

Re: Code strukturieren! Wie macht man es richtig ..
 
Warum funktioniert das nicht?
Was ist da Falsch

Delphi-Quellcode:
 property AeroEmulate[FGetAeroEmulate, FSetAeroEmulate: Integer]: Integer read FGetAeroEmulate write FSetAeroEmulate;
Also die Funktion als property
Delphi-Quellcode:
function TSkinConfig.zAEROEMULATE(nMode, RW : Integer): Integer;
begin
   if RW <> 0 then
    WasMode := nMode;

   Result := WasMode;

end;
gruss Emil


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 Uhr.
Seite 2 von 6     12 34     Letzte »    

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-2025 by Thomas Breitkreuz