fbpx

5 zasad programowania obiektowego, które musisz opanować, aby zostać profesjonalnym programistą C#

O karierze programisty marzy wiele osób. Jednak nauka tego zawodu często wymaga lat studiowania, samodoskonalenia się poprzez czytanie książek, udział w konferencjach branży IT, czy udział w praktykach, organizowanych przez różne firmy. Ale to wszystko, choćby trwało nawet 15 lat, na nic się zda, jeśli nie opanujesz jednej, kluczowej umiejętności – programowania obiektowego. Poznaj 5 zasad programowania obiektowego.

Jeśli chcesz być naprawdę profesjonalnym programistą, mistrzem w swojej dziedzinie, kimś, kto rozwiąże niemal każde zadanie w pracy oprogramowaniem, to musisz opanować wiele umiejętności. Tych umiejętności jest dużo, ale z całą pewnością można je opanować. Dzisiaj skupimy się na pięciu najważniejszych umiejętnościach, których nauczyłem się w pracy w takich firmach jak SII, Pearson, GSK, czy Enercon. Poznaj 5 niesłychanie przydatnych zasad programowania obiektowego.

1. Różnice między klasą, a obiektem

Zacznijmy od definicji programowania obiektowego. Co to jest programowanie obiektowe? Moim zdaniem jest to sposób pracy z kodem. Polega on na budowaniu klas, obiektów w taki sposób, żeby nasze programy były czytelne i jasne. Czytelność to największa zaleta programowania obiektowego. Ważne jest to, że każdy programista C#, Java, albo Python musi opanować te podstawy, bo każdy z wymienionych języków jest językiem obiektowym.

Główny składnik języków obiektowych to klasa. Możemy to porównać do klocków lego, gdzie z konkretnych klocków budujemy całą konstrukcję. Podobnie jest w przypadku programowania obiektowego, gdzie takim pojedynczym klockiem jest właśnie klasa. To z klas budujemy całe programy. Co więcej, klasy są obecne wszędzie. Na przykład aby napisać jakikolwiek program w języku C#, musisz utworzyć przynajmniej jedną klasę.

W programowaniu obiektowym używamy klas oraz obiektów. Bardzo ważne jest, abyś zrozumiał, że klasa to coś innego niż obiekt. Klasa to szablon. Na jego podstawie tworzymy jeden, lub więcej obiektów. I to obiekty są tworzone, oraz ładowane do pamięci operacyjnej (RAM) komputera w momencie uruchomienia programu. Musisz znać tę różnicę, aby rozwinąć swoje skrzydła w programowaniu na przykład w języku C#.

Ile klas tworzy przeciętny programista? Mnóstwo. W jednym z projektów, w których pracowałem mieliśmy 3 tysiące klas. Oczywiście istnieją również mniejsze projekty, szczególnie w teraz, gdy zyskują na popularności tzw. mikroserwisy (czyli stosunkowo małe programy, które można przepisać od zera w mniej więcej 2 tygodnie). Natomiast podając liczbę 3 tysięcy chcę Ci pokazać, jak dużo kodu tworzą programiści i jak intensywnie używamy klas. To argument przemawiający za tym, że warto poświecić swój czas, aby opanować je perfekcyjnie.

2. Techniki przechowywania danych, czyli pola i właściwości

W programowaniu chodzi o przechowywanie danych oraz ich przetworzenie. O ile samo przechowanie danych odbywa się zwykle w bazie danych SQL, to użycie tych danych zawsze wymaga zapisania w jakiejś klasie. Bardzo często spotykam się w języku C# z klasami DTO, czyli klasami, które nie mają żadnych metod, a jedynie pola albo właściwości. Aby udoskonalić swój warsztat programisty C#, musisz wiedzieć kiedy zastosować pola, a kiedy właściwości.

Aby przechować dane w obiektach DTO, to użyj właściwości. To zasada, którą ja kieruję się w swojej pracy. Jest to nowoczesna metoda. Początkujący programiści albo nie znają właściwości, albo nie potrafią ich używać prawidłowo. Dlaczego właściwość jest lepsza od zwykłych pól? Powodów jest kilka, ale najważniejszym z nich jest fakt, że właściwości mogą zawierać dodatkowy kod. Zwykle ten kod to logika, której zadaniem jest zapewnić, że nikt nie zapisze w naszej klasie nieprawidłowych danych. Oprócz tego wielka przewaga właściwości tkwi w tym, że możemy je wykorzystać w inicjalizatorze obiektu (czyli coś co może zastąpić konstruktor). Dzięki temu piszemy znacznie mniej kodu i osiągamy nasz cel. Mniej kodu to mniej czasu poświęconego na pisanie. A to przekłada się na wydajność programisty C#, a w konsekwencji jego zarobki. Więc jeśli chcesz więcej zarabiać to używaj C# w sposób efektywny.

Choć do przechowania danych najczęściej używamy właściwości, to istnieją pewne wyjątki. Najprostsza metoda przechowywania danych to pola. Używamy ich w klasie do tego, żeby przechować w niej dane. Pól używamy na przykład w serwisach, czyli klasach, które mają za zadanie odwołać się do innych klas (na przykład do repozytoriów). W takiej klasie w każdym polu przechowujemy repozytoria niezbędne do wykonania pewnych operacji. Czyli pól użyjemy w serwisach. Można przyjąć nawet dalej idącą zasadę i używać pól wszędzie tam gdzie wykorzystujemy dependency injection.

3. Metody – czyli jak ożywić obiekt

W dużym uproszczeniu każda klasa może zawierać dwie składowe: dane i zachowania. Dane to pola albo właściwości, a zachowanie klas to metody. To w metodach mieści się cała logika każdego programu, który napiszesz. To dzięki metodom unikniesz duplikacji kodu, i uzyskasz kod, który można czytać jak książkę.

Celem tworzenia metod jest przechowanie zachowania klasy. Ale trzeba dużo ćwiczyć. Im więcej metod napiszesz samodzielnie, tym lepiej opanujesz tę umiejętność. Trening czyni mistrza. Dlatego nic nie zastąpi pisania własnych programów. Następnym razem, kiedy będziesz chciał napisać jakiś kod w metodzie Main, zatrzymaj się i lepiej stwórz osobną klasę i metodę (lub kilka metod). dzięki temu Twój kod zyska na czytelności, a Ty sam znacznie łatwiej odnajdziesz się w nim na przykład za pół roku.

Kolejna bardzo ważna zasada brzmi : DRY, czyli don’t repeat yourself. Chodzi o unikanie powtórzeń kodu. Kod wykorzystywany w wielu miejscach powinien stać się metodą. Ta metoda może być później wywoływana z wielu różnych miejsc. Piszesz kod raz, a używasz wiele razy. To zysk bez ryzyka.

Inna zasada brzmi, że jeśli metoda korzysta z danych innego obiektu, to prawdopodobnie powinna być ona przeniesiona do tamtego obiektu. Wszystko sprowadza się do odpowiedzi na pytanie: gdzie jest miejsce danej metody. Po wielu latach pracy będziesz wiedział gdzie umieścić daną metodę. Dzięki intuicji. Ale na początku swojej kariery programisty C# polecam Ci stosować się do zasad. Zasady, o których mówię, znajdziesz w książce Roberta C. Martina pt. Czysty kod

Co zrobisz jeśli program nie działa jak powinien? Takie pytanie może pojawić się na rozmowie rekrutacyjnej. Dlaczego? Bo jeśli chodzi o oprogramowanie to często coś nie działa. Dlatego, kiedy napiszesz fragment kodu, to musisz umieć go zdebugować. Debugowanie możesz przeprowadzić – za pomocą Visual Studio. Jeśli chcesz nauczyć się jak zainstalować Visual Studio, to koniecznie zajrzyj tutaj

4. Ponowne wykorzystanie kodu – dziedziczenie

Jedną z najważniejszych zasad programowania obiektowego jest dziedziczenie. Co nam ono daje? Mniejsza duplikacja kodu. Wyobraź sobie 3 podobne do siebie klasy. Niech każda z nich robi prawie to samo. Mam nadzieję, że umiesz to sobie wyobrazić bez przykładu. ale raczej oczywiste jest to, że każda z tych trzech klas będzie zawierała ten sam fragment kodu. Po co powtarza kod? Jest lepszy sposób: Stwórz klasę bazową, umieść tam wspólny kod, a Twój zysk będzie natychmiastowy. Każda z tych trzech klas będzie mogła wykorzystać wspólny kod. wystarczy wykorzystać dziedziczenie, a jest to banalnie proste.

Co jeszcze daje nam dziedziczenie? Kiedy musimy zmienić kod naszego programu, to modyfikujemy tylko jedno miejsce – klasę bazową. Są sytuacje gdy pozostałe trzy klasy, czyli klasy dziedziczące, nie wymagają żadnej modyfikacji. Dzięki temu zmieniasz jedno miejsce w kodzie, a zysk odczuwasz w wielu miejscach. Dziedziczenie się opłaca.

5. Sekret mistrzów, czyli wzorce projektowe

Wzorzec projektowy (ang. design pattern) to schemat rozwiązania danego problemu, który ktoś już kiedyś wymyślił. To coś jak przepisy kulinarne w robicie kuchennym Thermoix. Jeśli chcesz ugotować zupę pomidorową, to uruchamiasz odpowiedni przepis i postępujesz zgodnie z wskazówkami. Zero trudności. Tak samo działają wzorce projektowe. Na przykład jeśli chcesz pobrać dane z bazy – użyj wzorca Repository. Jeśli chcesz stworzyć skomplikowany obiekt – użyj wzorca Factory.

Wzorców projektowych jest co najmniej kilkadziesiąt. Najprostszy wzorzec to DTO (ang. data transfer object). Z tego wzorca skorzystasz, kiedy chcesz na przykład wysłać dane z jednego systemu do drugiego.

Kolejny bardzo ważny wzorzec projektowy to Dependency Injection. Zrozumienie go zajęło mi sporo czasu, ale otworzyło mi nieskończone możliwości rozwoju. Nie przesadzam. Dependency Injection zmieniło całkowicie sposób w jaki myślałem o programowaniu. Kiedy będziesz się uczył o Dependency Injection to nie zniechęcaj się. Każda minuta zainwestowana w naukę zwróci się wielokrotnie.

Inne znane i często używane przez każdego programistę C# wzorce projektowe to Factory, Builder, albo Singleton. Powinieneś poznać je chociaż w podstawowym stopniu.

Jak widzisz, temat programowania obiektowego jest dość rozbudowany, ale gwarantuje Ci, że jeśli opanujesz podstawy, to tworzenie nowych programów będzie przychodzić Ci z łatwością, jakiej sobie nawet nie wyobrażasz. Będziesz wiedział gdzie umieścić dane, a gdzie umieścić zachowania programu. Programując obiektowo będziesz mógł bardzo szybko odnaleźć się w każdym projekcie C#, bo język C# wykorzystuje każdą z omawianych koncepcji niemal wszędzie.

Kiedy poznałeś już 5 zasad programowania obiektowego, to czas abyś wykorzystał tę wiedze w praktyce. W przeciwnym razie Twój mózg może jej nie zapamiętać.

Podsumowanie

Więc jeśli chcesz być dobrze opłacanym programistą, który potrafi odnaleźć się w każdym projekcie, to możesz nauczyć się wszystkiego już teraz. Nie tylko 5 zasad programowania obiektowego, ale dużo więcej znajduje się w naszym najnowszym szkoleniu online, więc zapisz się już teraz na nasz darmowy kurs: Programowanie Obiektowe w języku C#.

0 0 votes
Article Rating
Subscribe
Powiadom o
guest
0 komentarzy
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
Dołącz do naszych darmowych kursów online. Poznaj język C# i .NET od zera. Zacznij programować już dziś!
This is default text for notification bar