Mi a véleményetek a getter-setterekről?
Itt le vannak írva a legfontosabb érvek.
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.
"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.
"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.
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!