poniedziałek, maja 18, 2015

protected - powinni tego zakazać...

Modyfikatory dostępu w Java'ie są podstępne.

Ten, którego powinniśmy używać najczęściej, czyli default, nie jest używany prawie nigdy.
Ten, którego powinniśmy używać najostrożniej, czyli public używany jest przez wszystkich bez głębszego zastanowienia ("Czemu zrobiłeś tą metodę public? A bo chciałem ją móc przetestować").
Ten, którego powinniśmy nie używać, czyli protected jest używany głównie żeby sobie spaprać design kodu ;-)

Metoda, która jest protected powinna zaświecić z automatu kontrolkę alarmu, pole które jest protected powinno włączyć do tego syrenę, która będzie wyła, aż się je nie zprywatyzuje (taki neologizm, chociaż może prywatyzacja, czyli tutaj sprywatyzowanie by pasowało? Niby tak, acz gdy mówimy o sprywatyzowaniu czegoś mamy na myśli bardziej przekazanie rzeczy "wspólnej" na prywatną własność, a nie ukrycie czegoś przed światem) i nie zakryje chociaż jakimiś metodami dostępowymi.

Już to widziałem wiele razy w kodzie, robili to świetni programiści, lepsi niż ja. Później taki smrodek zostaje w kodzie i szkodzi w utrzymaniu, bo mało kto jest w stanie wytworzyć sobie w głowie mentalny obraz tego kodu i zależności jakie tam istnieją....
To powoduje dodawanie następnych rzeczy, które są protected, co po jakimś czasie zwiększa jeszcze bardziej koszt utrzymania....

Sam dziś użyłem protected w takim złym celu. Niby sobie to tłumaczę tym, że to tak na chwilę, bo chcę sprawdzić czy uczynienie tej konkretnej klasy, której to zrobiłem bardziej uniwersalną ma sens, że jak się okaże to być sensowne to to naprawię.... ale już napisałem klasę anonimową, w której nadpisuję ten kawałek, który jest protected żeby robić coś innego.... Taki "ukryty" pattern Strategy mi z tego wyszedł.... tylko, że źle użyty.
A wszystko przez użycie protected...

Bo protected podstępne jest.

Powinni go zakazać ;-)


Podobne postybeta
Code smellsy ;-) protected i abstract
Paradoks Java'y - domyślny poziom widoczności jest stosowany najrzadziej ;-)
Po Devoxx'ie
A ja jestem przeciwny prywatyzacji służby zdrowia.
C# miewa swoje plusy ;-)

Brak komentarzy:

Prześlij komentarz