Devloger

Czysty Kod - Zmienne Instancyjne

Zmienne Instancyjne w Obiektach

Obrazek i logo artykułu - Zmienne Instancyjne - Czysty Kod

Sytuacja, w której dana klasa ma bardzo wiele (zbyt wiele) zmiennych instancyjnych nie jest dobra. Dlaczego? Oraz czym są te zmienne instancyjne Emotikon uśmiechniętej buźki?

Czym jest zmienna instancyjna?

Zmienna instancyjna (instance variable) to taka zmienna, która jest właściwością danego obiektu (property) oraz która sama w sobie również jest obiektem. Zazwyczaj wprowadzamy je za pomocą metody wstrzykiwania zależności (dependency injection) przez konstruktor.

Ile obiekt takich zmiennych powinien posiadać?

Różnie. Dla przykładu w przypadku języka Java dobrą praktyka jest posiadanie maksymalnie dwóch, ewentualnie trzech.

Jednak w realiach PHP jest to zbyt mało, liczba taka jest niepraktyczna. Dobrym limitem jest tutaj 4, ewentualnie 5.

Posiadanie więcej zmiennych instancyjnych bywa często bardzo dobrym wskaźnikiem na to, że coś ci umyka, że czegoś tutaj brakuje, coś tutaj nie jest w porządku.

Jednak nie zawsze tak będzie, pamiętaj. Musisz samemu to sprawdzić, przemyśleć, ocenić. Może akurat uznasz, że posiadanie tych zmiennych instancyjnych w tej klasie (nawet w takiej ilości) ma sens i chcesz by tutaj były. Choć niestety nie jest to częstą sytuacją.

Jak można poprawić sytuację?

Pamiętajmy o SRP. Jeśli w danej klasie posiadamy więcej zmiennych instancyjnych niż 4-5... to bardzo prawdopodobnym jest, że łamiemy regułę SRP. Spójrzmy na naszą klasę, przemyślmy ją pod kątem SRP a raczej łamania SRP, rozejrzyjmy się.

To prawda, klasa ta posiada zmienne instancyjne i odwołuje się do innych obiektów po konkrety. Ale nie zmienia to faktu, że klasa ta ma zbyt dużą wiedzę i jest zbyt obciążona uwagą.

Jeśli wydaje ci się, że nie łamiesz SRP, to pomyśl, czy przypadkiem twoja klasa nie jest zbyt ogólna. Czy przypadkiem sam zbyt mocno jej nie obciążyłeś odpowiedzialnością.

Spójrz, czy przypadkiem nie używasz irracjonalnie dwóch lub więcej klas, gdzie to jedna z nich powinna zająć się tą pozostałą lub tymi pozostałymi. Warto jest korzystać z logicznych pośredników (klasy), którzy nimi są a mimo to ich pomijamy.

Pamiętaj, że masz bardzo wiele potężnych narzędzi i mechanizmów pod swoją ręką. Dla przykładu wydarzenia (eventy). Pomyśl, czy czasem coś bardziej nie pasuje do akcji na jakieś wydarzenie (event).

Co nam to daje?

Nie tylko trzymamy się dobrych praktyk i ważnych zasad takich jak SRP, ale również niesamowicie upraszczamy kod, czynimy go czystszym, lepszym Emotikon uśmiechniętej buźki.

Podsumowując

Kontroluj swoje klasy i zmienne instancyjne które się tam znajdują, ich ilość. Pamiętaj, od czterech do pięciu Emotikon uśmiechniętej buźki! A jeśli osiągniesz ten limit lub go przekroczysz - spójrz, przemyśl, przeanalizuj, oceń Emotikon uśmiechniętej buźki!

Kończąc

To tyle w tym temacie Emotikon uśmiechniętej buźki. Jeśli doczytałeś do końca to super. Mam nadzieję, że ten artykuł był dla ciebie jak najbardziej pomocny i dał ci dużo wartości. Jeśli tak, to podziel się nim z innymi Emotikon uśmiechniętej buźki.

Byłoby mi niezmiernie miło, gdybyś zostawił komentarz i podzielił się swoją opinią.

Zapraszam cię również do lektury innych moich artykułów, szczególnie tych, związanych z refaktoryzacją, zasadami SOLID.

A tymczasem życzę ci dobrego dnia, bywaj Emotikon uśmiechniętej buźki!

Krystian Bogucki

Podobał Ci się ten artykuł?

Jeśli tak, to zarejestruj się aby otrzymywać powiadomienia o nowych artykułach. Nie ujawnię nikomu Twojego adresu!

1 komentarzy... przeczytaj komentarze albo dodaj nowy komentarz


Ehlert

2019-09-18

A czym Java różni się od php pod kątem SOLID oraz OOP? Ta różnica w limitach zależności jest dla mnie błędna.