Skip to content

Java – ZK #5

Nie dziedziczymy stałych

W jednym ze wcześniejszych wpisów wspominałem, że należy pamiętać o umieszczaniu m.in. stałych na odpowiednim poziomie abstrakcji. Jest to istotna kwestia bezpośrednio związana z zachowywaniem poprawnej struktury kodu. Należy jednak pamiętać, aby nie starać się na siłę ich wyodrębnić do osobnych interfejsów, aby później po prostu je dziedziczyć. Mowa tutaj o sytuacji, gdy wewnątrz klasy implementującej pewien interfejs (lub klasy po niej dziedziczącej) pojawiają się tajemnicze stałe. Trzeba by w tym momencie prześledzić całą hierarchię klas/interfejsów, aby odnaleźć ich źródło. Jest to operacja czasochłonna dwukrotnie – po pierwsze programista musi poświęcić czas na znalezienie stałych w kodzie, a dodatkowo jego uwaga najprawdopodobniej ulegnie rozproszeniu, czego raczej każdy chciały uniknąć. Robert Martin w swojej książce zaznacza, że oszukiwanie zdefiniowanych w języku zasad zakresu jest fatalną praktyką! Rozwiązaniem tego problemu jest zastosowanie importu statycznego stałych. Dzięki niemu programista od razu jest w stanie rozpoznać źródło pochodzenia wykorzystywanych zmiennych.

Stałe, a typy wyliczeniowe

Typy wyliczeniowe są znane każdemu. Jednak mimo wszystko, bardzo często zastępuje się je zwykłymi stałymi określonego typu. Tak jak jeszcze w przypadku prostych, krótkich aplikacji nie jest to żadnym problemem (i oczywiście w przypadku tych większych często również nie), to warto jednak mieć na uwadze myśl o przyszłej konieczności rozbudowy kodu, co może wywierać na programiście konieczność stworzenia kodu odpowiednio elastycznego. Zadanie to jest znaczenie ułatwione właśnie dzięki typom wyliczeniowym. Mogą one przecież posiadać pola oraz metody. Stosując typ enum w razie potrzeby wystarczy odpowiednio go rozszerzyć (tudzież po prostu zmodyfikować), aby nasz program automatycznie korzystał z np. dodatkowych wartości bez konieczności jego modyfikowania w wielu miejscach. Jakby tego było mało, to zmniejszamy w ten sposób podatność systemu na błędy oraz poprawiamy czytelność.

Facebooktwitterredditlinkedinmail
Published inProgramowanie