Kezdőoldal » Számítástechnika » Programozás » Mi a véleményetek a getter-set...

Mi a véleményetek a getter-setterekről?

Figyelt kérdés
Én ne tudok értelmes indokot találni arra, hogy bárki is használja őket. (Kivéve a nem objektum orientált modelleket, ahol publikus adattagok vannak, amiket validálni kell)
2014. ápr. 29. 00:13
1 2 3
 11/22 anonim ***** válasza:
Ha van gettered/settered, miért lenne publikus az adattag?
2014. máj. 5. 06:20
Hasznos számodra ez a válasz?
 12/22 A kérdező kommentje:
Azért, mert a getter setter publikus adattagot valósít meg.
2014. máj. 5. 07:19
 13/22 anonim ***** válasza:

[link]

Itt le vannak írva a legfontosabb érvek.

2014. máj. 5. 07:25
Hasznos számodra ez a válasz?
 14/22 A kérdező kommentje:

A kérdésben az szerepelt, hogy objektum-orientált programozásnál mi haszna van a getter-settereknek.


A linkelt oldalon valóban értelmes érvek vannak, viszont egyik sem veszi figyelembe azt, hogy egy objektum-orientált modellben egyszerűen nincsenek publikus adattagok. Tehát, nincsenek getter-setterek is. Ugyanis az objektum-orientált elképzelés lényege, hogy a megvalósítást, amelyhez magukat az adattagok is tartoznak, teljesen egészében elrejted. Ha ezt valóban betartod, akkor nem lesz szükséged getter-setterre.


Persze készíthetünk property-ket, én egyáltalán nem vagyok ellene, csak akkor miért hívjuk ezt objektum-orientált programozásnak? (Hiszen nem az)


Illetve, az egyik legfőbb érv az volt, hogy ha mondjuk validálásra lesz szükség, akkor később az egész kódot át kell majd írnod. Ez csak akkor igaz, ha egy nagyon rossz nyelvet használsz. (pl. Java). Egy egyszerű property szintaxis képes ezt szépen kiváltani, kulturált nyelvekben van is ilyen.


A másik, hogy eleve rossz az elképzelés. Ha jó megoldást akarsz, akkor vagy property syntaxos nyelvet választasz, vagy, ami még jobb, a validálást, konvertálást külön metódusokba delegálod.

2014. máj. 5. 09:59
 15/22 iostream ***** válasza:

"csak akkor miért hívjuk ezt objektum-orientált programozásnak? (Hiszen nem az)"


Ez azért rossz érv, mert általában nem sok értelme van egy paradigmát tisztán használni. Az az egyetemen jól mutat, a valóságban általában kevered, mert úgy praktikus. Ha megnézed, a Java féle nyelvek sem korlátozzák magukat az OOP-re, elmentek a generikus meg a funkcionális felé is. Meg kell találni az egyensúlyt, meg kell találni, hogy mikor praktikus egy publikus változó és mikor nem az.

2014. máj. 5. 10:21
Hasznos számodra ez a válasz?
 16/22 A kérdező kommentje:

"Ez azért rossz érv, mert általában nem sok értelme van egy paradigmát tisztán használni. Az az egyetemen jól mutat, a valóságban általában kevered, mert úgy praktikus. Ha megnézed, a Java féle nyelvek sem korlátozzák magukat az OOP-re, elmentek a generikus meg a funkcionális felé is. Meg kell találni az egyensúlyt, meg kell találni, hogy mikor praktikus egy publikus változó és mikor nem az.

"


A logikai szempont itt az, hogy objektum-orientált modell esetén nincs szükség arra, hogy legyen szintaxisod publikus adattag megvalósítására, ami indokolja azt, hogy miért nincs egy adott nyelvben (pl. Java) property szintaxis.


A te meglátásoddal egyetértek, többféle paradigmát kell vegyesen használni. Egy alapvetően adat-orientált elképzelést nem feltétlenül jó ötlet objektum-orientáltan megvalósítani. Viszont, ha vegyes paradigmát használunk, akkor az előző bekezdés végett, szükségünk lenne arra, hogy ezt a nyelv is támogassa. A getter-setter csak egy hack-szagú kerülőmegoldás a nyelv hiányosságainak pótlására. És szerintem elég kevés józan indok hozható fel arra, hogy olyan nyelvet használj, ami nem hogy nem veszi át a munkát tőled, hanem még értelmetlen munkát rak a válladra. Tehát hacsak rá nem kényszerülsz, hogy pl. Java-t használj, nem fogsz getter-settereket használni.

2014. máj. 5. 10:48
 17/22 iostream ***** válasza:
Szerencsére nem kényszerítenek rá a Java használatára :)
2014. máj. 5. 14:25
Hasznos számodra ez a válasz?
 18/22 anonim ***** válasza:

Vannak bizonyos - elég ritka - esetek, amikor totálisan felesleges getter-t meg setter-t írni, szóval nem feltétlenül értek egyet azokkal a coding guideline-okkal, amik kötelezővé teszik.

De általában érdemes, okokat már felsoroltak eleget az előttem hozzászólok, szóval nem ismétlem meg őket.

2014. máj. 8. 15:29
Hasznos számodra ez a válasz?
 19/22 Srapnel ***** válasza:
A property szintaxis valójában "syntactic sugar" a getter-setterre. Remekül látszik ez a C# esetén pl.
2014. máj. 8. 21:15
Hasznos számodra ez a válasz?
 20/22 Srapnel ***** válasza:
Plusz értem én, hogy a fő bajod az, hogy miért lenne bárkinek szüksége egy objektum belső adataira. Azonban hogy máshogy menne ez, ha egy komponensnek kifejezetten az a feladata, hogy adatot tároljon/szolgáltasson? Nem arról van szó, hogy az "add ide az x értékét" üzenetet küldöd neki?
2014. máj. 8. 21:20
Hasznos számodra ez a válasz?
1 2 3

További kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!