Nasza strona używa cookies. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

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

Dmytro Khmelenko Senior Software Engineer / Freeletics
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.

2 komentarzy

Lubisz dzielić się wiedzą i chcesz zostać autorem?

Podziel się wiedzą z 160 tysiącami naszych czytelników

Dowiedz się więcej