Object Oriented Programming

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.

Reklamy

4 myśli nt. „Object Oriented Programming

  1. 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.

  2. 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.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s