Motyw dosyć mocno programistyczny, ale nie mogłem się zdecydować do jakiego działu wrzucić - raczej nie jest to temat nietuzinkowy, więc jest tutaj :P.
Zostałem nauczony żeby wszystkie (jak najwięcej się da) pola klas ustawiać jako private, i udostępniać odpowiednie metody. Jest to zgodne z pewnymi kanonami programowania obiektowego - klasa powinna być czarną skrzynką wykonującą pewne zadanie, jej pola nie powinny nas za wiele obchodzić (podczas korzystania z niej), a wszystkie interakcje z klasą powinny się odbywać za pomocą jej metod.
Ostatnio jednak coraz częściej zadaję sobie pytanie czy ta cała konwencja faktycznie ma sens ? Coraz częściej mam wrażenie, że piszę tuziny metod, które de facto umożliwiają mi tylko swobodny dostęp do składowej jakiejś klasy - czyli robią to samo co modyfikator public.
Dzisiaj znowu stanąłem przed dylematem public czy private ? Wpisałem frazę w google i znalazłem na pewnym forum kogoś kto pytał o to samo. Przeważającą ilość odpowiedzi można by streścić w nakazie: "Używaj privat, chyba, że już naprawdę nie masz innego wyboru". Naprawdę ? Czy modyfikator public to jakieś prastare zło ?
Przemyślałem sytuację odnośnie mojego kodu i postanowiłem:
- Ustawię public. Sorry, ale wydaje mi się że naprawdę nie ma sensu na siłę ustawiać jakiegoś pola np. String jako private, tylko po to, żeby musieć potem dodać metody
getString()
isetString(String str)
. - Napiszę o tym tutaj, być może ktoś poda jakieś sensowne powody wciskania wszędzie private, lub przychyli się do moich wniosków.