Czym jest enkapsulacja i co daje jej stosowanie?

Czym w ogóle jest enkapsulacja (zwana również hermetyzacją)? Tak z grubsza:
Jest to ukrywanie. Nasze obiekty powinny być skryte i nieśmiałe 😉 i nie uzewnętrzniać się… to znaczy swoich bebeszków. Co ukrywamy? Wszystko co się da, przede wszystkim pola klasy i w C# właściwości (properties). W Javie zamiast właściwości są metody getX setX, te same gettery i settery tylko w innej formie. Najlepiej je ukryć, a raczej ich nie używać… ale życie często jest inne i musimy je udostępnić (nie, nie musimy, świadomie wtedy łamiemy enkapsulację bo jest łatwiej – co nie znaczy zawsze lepiej). Wtedy chociaż settery powinny być ukryte lub nie istnieć w ogóle.

A jak ukrywamy?

Czytaj dalej

YAGNI a „dobry”, SOLIDny, elastyczny kod.

Czemu o tym piszę? Ostatnio czytając internety i sięgając pamięcią do moich doświadczeń doszedłem do wniosku, że czasem ktoś usprawiedliwia przez YAGNI pisanie mniej elastycznego kodu.
Nawet, jeśli sam rozumie dlaczego pisanie takiego kodu jest dobre. Tak więc Panie i Panowie, moja pierwsza techniczna notka:


Najpierw:

Co to jest Yagni? Jeśli nie wiesz, a Ci się nie chce pytać google, o to krótkie podsumowanie:

Czytaj dalej