Mi a véleményetek a getter-setterekről?
"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?"
Akkor az van, hogy nem objektum-orientált az ideális tervezési modell. Lásd #16.
Dehogynem. A getterek által szolgáltatott adatok azért vannak, hogy egyszer fel legyenek használva egy eljárásban (legyen az bármi - számítás, megjelenítés, stb.). Csak úgy tudsz megszabadulni a getterektől, ha mindezeket az eljárásokat az "adatgazda" objektumba viszed bele. Ez pedig rossz. Nagyon rossz. Ez sokkal mélyebb ponton sérti az OOP-t, mint egy adott kontextusban értelemmel bíró ökölszabály megsértése.
Ha hétköznapi példát akarnék mondani, akkor vegyük azt, hogy neked ugye van egy neved. A neved gettere az, ha én megkérdezem tőled, hogy hogy hívnak és te megmondod. Vagy amikor bemutatkozáskor közlöd velem. Na most, a gettered nélkül úgy kellene leélned az életedet, hogy mindenhol, amikor csak a nevedet kérdezik, te megcsinálnád azt, amiért kérdezik. Pl. a bankban mindig oda kellene ülnöd a banki számítógép elé és saját magad gépelnéd be a neved, hiszen azt csak úgy nem mondhatod meg az ügyintézőnek. De más szempontból jobb példa az életkor (most attól tekintsünk el, hogy nem settelhető). Na most ha én arra vagyok kíváncsi, hogy hány évvel vagyok idősebb nálad, akkor mivel nem kérdezhetem meg az életkorodat, kénytelen vagyok tőled közvetlenül megkérdezni, hogy hány évvel vagyok idősebb nálad és akkor én megmondom, hogy hány éves vagyok, te meg elvégzed a kivonást. Az a gond, hogy tudnod kell kivonni, amit lehet, hogy én tudok (pl. ha mondjuk te 3-4 éves lennél csak), ráadásul az összes jövőbeli, az életkoroddal kapcsolatos műveletet ismerned kellene. Azt mondanom sem kell, hogy ezt a valóságban nem így csináljuk. Már pedig ha a valóság számára megfelelnek a getterek-setterek, akkor a szoftvernek is.
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!