"A szebb és olvashatóbb dolog szubjektív, nekem valahogy jobban olvashatóbb a
x.setY(z);
mint az
x.y = z;
forma.
Az utóbbi esetén nem lehetek biztos benne, hogy a beállításkor fut-e le a validálás, vagy értesítődik-e a változásról egy observer. Az első esetben az a plusz információ megvan, hogy potenciálisan futni fog validálás, vagy történik valami változáskezelés."
Az első esetben sem lehetsz biztos benne. pl.:
public void setY(Valami param) { y = param; }
Itt sem ellenőriz semmit és nincs értesítés.
Illetve a formától függetlenül a második esetben is futhat validálás és mehet observer értesítés.
Erről jut eszembe a Java-nak egy nagy hülyesége, az osztályok, memberek láthatósága.
Van a public, mindenki láthatja, rendben van. Van a package láthatóság, amikor nem írok semmit, az is rendben van. Van a private, csak az adott osztály láthatja, még a leszármazott sem, rendben van. DE! Van a protected, a leszármazott osztály és a package láthatja. Itt van a kutya elásva!
Ha olyan member változót akarsz csinálni, amit a leszármazottak láthatnak, de más nem, és kívülről csak ellenőrzött módon (metóduson keresztül) állítható, akkor ezt nem tudod elérni, mert az ugyanabban a package-ben levő osztályok közvetlenül is elérhetik a member változót.
Tehát a protected láthatóság használata teljesen kerülendő.
Természetesen ez a rész is "javítva" van a Scala-ban, ráadásul sokkal jobban finomhangolható a láthatóság is.