31.12.20203 min

Dmytro KhmelenkoSenior Software Engineer

3 książki, które pomogą Ci lepiej kodować

Poznaj 3 książki, których lektura może Ci pomóc w ulepszeniu swoich umiejętności programistycznych.

3 książki, które pomogą Ci lepiej kodować

Bycie lepszym programistą wymaga dużo praktyki - tylko tak można się naprawdę rozwijać. Najlepiej jest jednak wpierw przyswoić teorię, a potem brać się za praktykę. W świecie software developmentu rzeczą normalną jest nieustanna edukacja poprzez czytanie artykułów i książek, chodzenia na meetupy oraz próbowanie swoich sił z nowymi bibliotekami, wzorcami, czy paradygmatami. 

Ja sam czytam sporo książek, aby doskonalić swoje umiejętności programistyczne. Przygotowałem tutaj krótką listę lektur dla początkujących, którzy chcą pisać bardziej elegancki kod i wspiąć się na wyższy szczebel kariery. 


Algorithms, autor: Robert Sedgewick 

Z książki tej nauczysz się podstawowych algorytmów, takich jak wyszukiwanie, czy sortowanie. Dowiesz się też czegoś o grafach. Każdy student informatyki uczy się o strukturach danych i o algorytmach. 

Są one kluczowe dla tego obszaru wiedzy. Książka ta wyjaśni Ci, jak zaimplementować funkcję do wyszukiwania oraz wytłumaczy problem sortowania. Jedna sekcja jest też poświęcona teorii grafów. Po lekturze powinniście być w stanie przechodzić po drzewie i znajdować najkrótszą ścieżkę. 

Rozpoznanie tych algorytmów i umiejętność ich używania może Ci się przydać na następnej rozmowie kwalifikacyjnej. Doświadczony inżynier oprogramowania zna odpowiedni algorytm na właściwą sytuację i wie, jakiej reakcji się spodziewać. 

Na wypadek, gdyby czytanie grubej książki nie było dla Ciebie aż tak atrakcyjne, to można zawsze wypróbować następujący kurs na Coursera, przygotowany przez jej autora. 


Kod doskonały. Jak tworzyć oprogramowanie pozbawione błędów, autor: Steve McConnell

Co mnie zaskoczyło po przeczytaniu tej książki, to fakt, że nikt nigdy tak dobrze nie wyjaśnił mi pewnych podstaw. Pozwól, że pokażę Ci kilka przykładów. 

 Na przykład, deklarowanie i inicjowanie zmiennej tylko tam, gdzie będziemy jej używać. Nie ma potrzeby deklarowania zmiennej i przypisywania jej gdzieś w kodzie. Zmienna powinna mieć możliwie jak najmniejszy zasięg. Zwiększa to czytelność kodu, co sprawi, że Twoi współpracownicy będą Ci z pewnością bardzo wdzięczni. 

Kolejnym przykładem jest używanie wyrażeń warunkowych if. Są one dosyć proste, ale mogą zmniejszyć czytelność kodu. Spójrzcie na poniższy przykład: 

if (paymentComplete) {
  if (errorCode != 0) {
     ...
  } else if(errorCode == 422) {
     ...
  } else {
    if (showError) {
      ...
    } else {
      ...
    }
  }
} else {
   ...
}


Powyższy przykład ma zbyt wiele zagnieżdżonych wyrażeń if. Sprawia to, że ciężko jest się rozczytać i testować logikę. Podczas nauki programowania, skupiamy się na tym, jak if działa i kiedy go używać. Nikt nam jednak nie mówi, że można sobie tutaj bardzo łatwo zaszkodzić.  

Książka daje pewną radę: unikaj zbyt dużej liczby zagnieżdżonych bloków, rozważ dzielenie kodu na funkcje i sprawdź, czy wrażenie switch...case pasuje (jeżeli Twój język je obsługuje). 

Omawiana książka zawiera jednak jeszcze więcej przykładów. 


Functional Thinking: Paradigm Over Syntax, autor: Neal Ford

Według Wikipedii pierwszy funkcyjny język programowania powstał pod koniec lat pięćdziesiątych XX wieku. Od tego czasu paradygmat programowania funkcyjnego zaczął zyskiwać na popularności. Termin ten oznacza, że dane są przekształcane za pomocą funkcji, które można tworzyć na wielu poziomach.

Junior developerzy mogą jednak nie do końca rozumieć, jak budować bezstanowe sekwencje. Nawet dla doświadczonych programistów, którzy nigdy nie używali programowania funkcyjnego, napisanie wydajnego i łatwego w utrzymaniu kodu może być trudnym zadaniem.

Następujący przykład w Kotlinie sumuje kwadraty liczb parzystych:

val input = listOf(1, 2, 3, 4, 5, 6)
val result = input.filter { it % 2 == 0 }
                  .map { it * it }
                  .sum()


Można to zrobić w zwykły, deklaratywny sposób, ale wymagałoby to napisania kilku pętli i zapisania stanów pośrednich. Pisanie kodu w sposób funkcyjny sprawia, że jest on prostszy, czystszy i bezstanowy.

Poza tym ważne jest, aby zdać sobie sprawę, że kolejność funkcji może odgrywać dużą rolę, jeżeli chodzi o wydajność. Patrząc na przykład, kiedy metoda filter() zostanie wywołana wcześniej, to poniższe funkcje działają już na mniejszym zestawie danych.

Książka ta wyjaśnia najpopularniejsze funkcje, uczy, jak je efektywnie stosować i jak pisać czysty kod w funkcyjny sposób. Jest ona jednak zalecana programistom, którzy mają już jakieś doświadczenie w kodowaniu.


Podsumowanie

Istnieje wiele dobrych książek o inżynierii oprogramowania. Te, które tutaj pokazałem, mogą mieć jakieś alternatywy. Niemniej jednak jeśli je przeczytasz, będziesz w stanie pisać i dostarczać czytelny i skalowalny kod.


Oryginał tekstu w języku angielskim możesz przeczytać tutaj.

<p>Loading...</p>

Powiązane artykuły

Dziel się wiedzą ze 160 tysiącami naszych czytelników

Zostań autorem Readme

Ubezpieczeniowy Fundusz Gwarancyjny

Specjalista ds. testów

medium

Znamy widełki

Kontrakt B2BUmowa o pracę

Warszawa

Ważna do 27.02.2022

Dobrze
JIRASoapUIOracle Database
Początkujący
FitNesseJMeter

Sii Polska

DevOps Engineer

medium

17 000 - 24 000 PLN

Kontrakt B2B

Warszawa

Ważna do 27.02.2022

Dobrze
AWSGCPGitHub
Bardzo dobrze
Linux

Accenture Polska

Agile Project Manager

medium

Brak widełek

Kontrakt B2BUmowa o pracę

Warszawa

Praca zdalna 100%

Ważna do 27.02.2022

Bardzo dobrze
Agile Methodologies (Scrum, Kanban, Kaizen)
Dobrze
Team-building & people management
Początkujący
cloud fundamentals

DB Schenker Technology Center Warsaw

Business Analyst

medium

Brak widełek

Kontrakt B2BUmowa o pracę

Warszawa

Ważna do 27.02.2022

Accenture Polska

PHP/Magento Developer

medium

Brak widełek

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 27.02.2022

Bardzo dobrze
PHPGIT
Dobrze
Magento 2SOAP/REST HTML/CSS
Początkujący
JSONJavaScript jQuery

T-Mobile Polska S. A.

Inżynier Sieciowy

medium

Brak widełek

Kontrakt B2B

Warszawa

Ważna do 27.02.2022

Asseco Poland S.A.

Młodszy Analityk Finansowy

junior

Brak widełek

Umowa o pracę

Rzeszów

Ważna do 27.02.2022

Netguru

Junior iOS Developer

junior

4 200 - 6 000 PLN

Kontrakt B2BUmowa o pracę

Praca zdalna 100%

Ważna do 27.02.2022

Dobrze
iOS

7N

Data Engineer

medium

15 100 - 18 100 PLN

Kontrakt B2B

Praca zdalna 100%

Ważna do 27.02.2022

Dobrze
MS SQLETLSpark

7N

Senior Business Analyst

senior

16 800 - 21 800 PLN

Kontrakt B2B

Praca zdalna 100%

Ważna do 27.02.2022