Czasem zaczynam myśleć, że programiści traktują zasady obiektowości jako święte i bez znaczenia jest czy to co tworzą będzie wygodne w użyciu. Przecież musi być zgodne z regułami OOP!
Ostatnio na forum widziałem gdzieś prawie odrazę dla stosowania zmiennych globalnych – pomimo tego ze 90% obiektów potrzebowała właśnie tej jednej zmiennej.
Chodzi mi o wskaźnik na urządzenie D3D. W temacie poruszany był problem umieszczenia tego w kodzie i jedyne rozwiązania widziane przez autora to:
- wcisnąć wskaźnik do jednej klasy w sekcji private i chyba uczynić go jeszcze statycznym i zaprzyjaźnić z nią 3/4 innych klas
- skutecznie przekazywać wskaźnik do urządzenia kolejnym klasom które go wymagają.
Nie trzeba być super programistą żeby domyślić się, że pierwsze rozwiązanie jest raczej naciągane przez duże `N`, a drugie po prostu nie wygodne.
A nie łatwiej/szybciej/elastyczniej jest po prostu dać ten wskaźnik jako zmienną globalną? Ja zastosowałem właśnie takie rozwiązanie w AGE. Zyskałem na tym łatwość w dodawaniu nowych części, które potrzebować będą tego wskaźnika, no i najważniejsze – wygodę. Nie mam miliona wskaźników tylko jeden z którego korzystają wszyscy oraz nie muszę przekazywać tego wskaźnika każdemu nowemu obiektowi z osobna.
IMHO reguły OOP to tylko dobre wskazówki i nie można ich traktować jako wyznacznika tworzenia nowego kodu… Przynajmniej ja nie będę dopóki rozwiązanie zgodne z OOP będzie strasznie niewygodne w późniejszym użyciu.

Zgadzam się w 100%.
Dzieki
Pocieszające jest to, ze jest co najmniej jedna osoba tam w świecie która podziela moje zdanie
He he. Ja się z Tobą zgadzam tak w 99%. Zawsze będziemy się sprzeczać, co jest lepsze: objektowość, czy strukturalność, bo nie ma uniwersalnych problemów. Do każdej sytuacji trzeba wybrać odpowiednie rozwiązanie.
Ale ja sie wcale nie mam zamiaru sprzeczać z nikim. Wiadomą rzeczą jest że OOP jest lepsze tylko nie wszystko złoto co się świeci. Trzeba korzystać z rozumu zamiast usilnie wszędzie kombinować z obiektami wszędzie.