Zmienne Instancyjne w Obiektach
Sytuacja, w której dana klasa ma bardzo wiele (zbyt wiele) zmiennych instancyjnych nie jest dobra. Dlaczego? Oraz czym są te zmienne instancyjne ?
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 .
Podsumowując
Kontroluj swoje klasy i zmienne instancyjne które się tam znajdują, ich ilość. Pamiętaj, od czterech do pięciu ! A jeśli osiągniesz ten limit lub go przekroczysz - spójrz, przemyśl, przeanalizuj, oceń !
Kończąc
To tyle w tym temacie . 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 .
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 !