Jak stworzyć własny obiekt immutable w .Net i czego nie robić?

Hej, dzisiaj kontynuacja poprzedniego wpisu o niezmiennych obiektach.

Jako programiści .Net już teraz pracujemy z niezmiennymi obiektami na co dzień. Przykładem może być String albo DateTime. Niestety sam .Net nie pozwala nam jeszcze na tworzenie takich obiektów w bardzo łatwy sposób, np za pomocą samej adnotacji na klasie. Są plany aby to zmienić w kolejnych wersjach językach, ale zobaczymy co z tego i kiedy wyjdzie. W tym momencie, aby stworzyć taki obiekt, sami musimy zadbać o jego niezmienność. Co też nie jest trudne.

Przykładowa niezmienna klasa może wyglądać w ten sposób:

Czytaj dalej

Czym są obiekty immutable i kiedy oraz dlaczego warto je stosować?

Obiekty immutable, jak wskazuje ich nazwa, charakteryzują się tym, że nie można ich prosto zmienić po tym jak zostały stworzone (można na przykład dostać się do samej pamięci, czy też użyć refleksji). Nie ważne ile mają pól i właściwości oraz jakiego są typu. Czasem, potrzebujemy taki obiekt zmienić, wtedy zmieniamy go w całości. Możemy po prostu stworzyć nowy obiekt tej samej klasy mający nowe wartości.


Co nam to daje?

Zalet posiadania i używania takich obiektów jest kilka.

Czytaj dalej

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

Jak zacząć z DDD (Domain Driven Design) – materiały

Cześć,

Dziś podzielę się z Tobą ciekawą listą materiałów o DDD, czyli Domain Driven Design. Jest to podejście do tworzenia oprogramowania przydatne wtedy, kiedy domena nad którą pracujemy jest skomplikowana. Jednocześnie nie zalecane do trywialnych części aplikacji w stylu „encje na twarz i pchasz” czyli typu CRUD. Ułatwia pracę z kodem jak i… klientem :-). Temat, którym na pewno warto się zainteresować.

Skąd pomysł na tę listę? Podczas kilku firmowych technicznych spotkań, DDD było cieszącym się największym zainteresowaniem tematem. Wzbudziło też kilka fajnych dyskusji. Nie każdy miał styczność z tym konceptem, dlatego chce Ci go przybliżyć.

W związku z tym, dla zainteresowanych tym tematem przygotowałem listę materiałów wprowadzających do DDD, z których sam korzystam bądź korzystałem. Konsultowałem tę listę też z kolegami, aby mieć pewność, że nic ciekawego dla początkujących mi nie umknęło. Nie jest to cała potrzebna wiedza, ale bardzo dobry początek. Materiały są w różnej formie tak, żeby każdy znalazł coś dla siebie. Lista jest bardzo subiektywna, jeśli znasz temat i chciałbyś ją rozwinąć, albo znalazłeś ciekawe materiały sam – podziel się w komentarzu 🙂


Darmowy ebook:
Na początek chciałem Cię gorąco zachęcić do przeczytania darmowego ebooka (104 strony), który dość fajnie i mocno podsumowuje temat. Jest on napisany na podstawie książki twórcy DDD (a czemu warto przeczytać najpierw tego ebooka zamiast pełnej książki napiszę później):

Czytaj dalej

O tym jak VS 2015 Update 2 popsuło mój workflow i co można z tym zrobić

Cześć, po zainstalowaniu najnowszej poprawki do Visual Studio 2015: Update 2 natrafiłem na pewien dokuczliwy dla mnie problem. Dotyczy on zarówno wersji Community jak i Professional. Chciałem się z Tobą podzielić sposobem na jego obejście, gdyż rozwiązać całkiem tego problemu nie można, dopóki Microsoft nie wypuści poprawki.

Pokażę Ci dwa sposoby obejścia problemu, które można ze sobą łączyć.

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