jeszcze jest kolejna konwencja - czyli właściwości, które uruchamiają getter/setter pod spodem:
someObject.value // uruchomi się getter z automatu
someObject.value = 123; // uruchomi się setter z automatu
w niektórych językach (np. JS) da się tak robić, ale mam mieszane uczucia. Z jednej strony jest to fajne (choćby przez fakt, że w JS można robić wszystko publiczne, a potem dodać setter/getter później, jak będzie potrzeba), z drugiej strony zaciemnia to kod, nieraz już miałem bugi w programach dlatego, że zewnętrzna biblioteka udostępniała pewne obiekty, które wyglądały jakby wszystko miały publiczne, a tak naprawdę miały jakąś magię pod spodem.
Węc podoba mi się to na poziomie estetyki, cukru składniowego, jednak wolę nie korzystać, żeby nie zaciemniać kodu bez potrzeby.
No i zwykle staram się nie pisać getterów, żeby nie łamać enkapsulacji. Jeśli potrzebuję udostępnić jakąś wartość to często robię to w postaci getXXX, natomiast bez settera w stylu setXXX, bo zwykle się i tak nie przydają, a łamie to enkapsulację, zasadę YAGNI oraz wprowadzania mutowalny stan. To obiekt powinien sam wiedzieć, które zmienne ma ustawić w danej sytuacji, a nie użytkownik (bo para getXXX i setXXX tak naprawdę nie różni się od zrobienia zmiennej publicznej).
Jeszcze teraz ostatnio zacząłem robić samo get, bez nazwy zmiennej, taki ogólny getter, który bierze jako argument stringa i na podstawie tego wydobywa pewne zmienne, np.:
obj.get('something')
obj.get('something.else')
Czyli trochę jak jQuery robi z zapytaniami:
$("#something > input")
fajnie się tak tworzy różne DSLe (chodzi o to, że obiekt może przyjąć stringa, zparsować go choćby wyrażeniem regularnym do tokenów, i potem zanalizować co użytkownik chce i w jaki sposób mu te dane udostępnić). Też nazywam to czasem query a nie get (bo to bardziej jak takie zapytanie do obiektu wygląda).
- cichy getter i cichy setter
name() - getter
name(value) - setter
we frontendzie to się nazywa jQuery style getters and setters :) Jest to fajne dla bibliotek, które zamierzają być przede wszystkim przyjazne userowi, bo to w połączeniu z fluent interface pozwala na dość zwięzłe i deklaratywne pisanie.
$("#some-element").attr('href', 'example.js').text('This is link');
jest to dość cukierkowe programowanie, ale czemu nie. W jQuery się to sprawdziło.