Nicht daß ich mich darüber Beschweren möchte ...
-
- Beiträge: 688
- Registriert: Mi 3. Okt 2007, 21:00
- OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
- CPU-Target: x86_64
Re: Nicht daß ich mich darüber Beschweren möchte ...
Warum soll man eigentlich nie eine Variable unter public verfügbar machen, sondern immer Setter und Getter oder eben propertys verwenden? (Ich mache es immer mit properties, weil ich das schönder finde, aber z.B. in Java sind die setter und getter methoden einfach nur lästig. Wenn man die variablen dann aus faulheit als public deklariert, ist das aber sofort "schlechter stil" - Warum?)
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Nicht daß ich mich darüber Beschweren möchte ...
Weil du dann keine Kontrolle hast, was in den Variablen steht. Z.B.:
Du möchtest das eine bestimmte Int Variable nur werte von 10-20 annehmen kann. Dafür würde sich jetzt ein Property lohnen. und das Feld für diese Varible sollte private sein. Damit der User nicht da zwischen funken kann.
Oder: Der User möchte auf eine StringList zugreifen, die vielleicht noch gar nicht erstellt ist. In einer Eigenschaft könntest du das vorher prüfen.
Das hängt aber auch mit deinen Zielen zusammen. Ein anderer Grund ist: Es ist unter der OOP einfach üblich, keine Variablen unter Public zu haben(Mache ich aber auch). Dafür gibt es die Eigenschaften.
Hier kannst du ja auch beim Lesen den Wert beeinflussen.
Du möchtest das eine bestimmte Int Variable nur werte von 10-20 annehmen kann. Dafür würde sich jetzt ein Property lohnen. und das Feld für diese Varible sollte private sein. Damit der User nicht da zwischen funken kann.
Oder: Der User möchte auf eine StringList zugreifen, die vielleicht noch gar nicht erstellt ist. In einer Eigenschaft könntest du das vorher prüfen.
Das hängt aber auch mit deinen Zielen zusammen. Ein anderer Grund ist: Es ist unter der OOP einfach üblich, keine Variablen unter Public zu haben(Mache ich aber auch). Dafür gibt es die Eigenschaften.
Hier kannst du ja auch beim Lesen den Wert beeinflussen.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 462
- Registriert: Mi 30. Jul 2008, 13:11
- OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
- CPU-Target: 32Bit
- Kontaktdaten:
Re: Nicht daß ich mich darüber Beschweren möchte ...
Naja, wenn man properties hat, dann sollte das Feld dazu unbedingt private sein. Aber wenn die property keine Getter und Setter hat, sondern nur direkt auf das Feld zugreifen würde, dann benutz ich auch keine properties sondern direkt die Felder (dann natürlich ohne vorangestelltes F im Namen).
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Nicht daß ich mich darüber Beschweren möchte ...
In der Theorie sind die properties dazu da um den Datenzugriff OOP-gerecht von der Speicherung zu trennen. Vollkommen OOP würde ich auf die Daten nie mehr direkt zugreifen sondern immer die Kapselung durch Objekt, property und Methoden verwenden. Da das ganz etwas übersichtlicher ist, als wenn ich jede Variable global deklariere, ist das auch einfach zu lesen. In der Praxis gilt aber immer noch: Was funktioniert, funktioniert (oder anders ausgedrückt: der Compiler wirds dir sagen).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Nicht daß ich mich darüber Beschweren möchte ...
oder anders ausgedrückt: Du wirst es schon merken wenn es nicht Funktioniert. Ich denke aber es kommt immer drauf an, was du genau machen möchtest. Property's gibt es in sehr vielen Formen. Sie sind wie ich finde, ein mächtiges Werkzeug. Ich glaube das ist auch einzigartig in "Object Pascal", in dieser Form. In keiner anderen sprachen kommen sie vor bzw. sie Funktionieren dann anders.
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 238
- Registriert: So 13. Dez 2009, 09:43
- OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
- CPU-Target: x86 64Bit
- Wohnort: Niederösterreich
Re: Nicht daß ich mich darüber Beschweren möchte ...
Ich habe bereits begonnen eigene Properties zu verwenden und freunde mich schnell damit an.
Besonders die Eigenschaft durch bloßes Zuweisen eines Wertes "Hintergrundarbeit" automatisiert ablaufen zu lassen ist Gold wert.
Grüße
Christian
Besonders die Eigenschaft durch bloßes Zuweisen eines Wertes "Hintergrundarbeit" automatisiert ablaufen zu lassen ist Gold wert.
Grüße
Christian
Früher war alles besser. Und aus Holz!