Czysty kod Podrecznik dobrego programisty.pdf

(400 KB) Pobierz
Czysty kod. Podręcznik dobrego programisty
Czysty kod. Podrêcznik
dobrego programisty
Autor: Robert C. Martin
T³umaczenie: Pawe³ Gonera
ISBN: 978-83-246-2188-0
Tytu³ orygina³u : Clean Code: A Handbook
Format: 168 × 237, stron: 424
Poznaj najlepsze metody tworzenia doskona³ego kodu
Jak pisaæ dobry kod, a z³y przekszta³ciæ w dobry?
Jak formatowaæ kod, aby osi¹gn¹æ maksymaln¹ czytelnoœæ?
Jak implementowaæ pe³n¹ obs³ugê b³êdów bez zaœmiecania logiki kodu?
O tym, ile problemów sprawia niedbale napisany kod, wie ka¿dy programista. Nie
wszyscy jednak wiedz¹, jak napisaæ ten œwietny, "czysty" kod i czym w³aœciwie powinien
siê on charakteryzowaæ. Co wiêcej - jak odró¿niæ dobry kod od z³ego? OdpowiedŸ na te
pytania oraz sposoby tworzenia czystego, czytelnego kodu znajdziesz w³aœnie w tej
ksi¹¿ce. Podrêcznik jest obowi¹zkow¹ pozycj¹ dla ka¿dego, kto chce poznaæ techniki
rzetelnego i efektywnego programowania.
W ksi¹¿ce „Czysty kod. Podrêcznik dobrego programisty” szczegó³owo omówione
zosta³y zasady, wzorce i najlepsze praktyki pisania czystego kodu. Podrêcznik zawiera
tak¿e kilka analiz przypadków o coraz wiêkszej z³o¿onoœci, z których ka¿da jest
doskona³ym æwiczeniem porz¹dkowania zanieczyszczonego b¹dŸ nieudanego kodu.
Z tego podrêcznika dowiesz siê m.in., jak tworzyæ dobre nazwy, obiekty i funkcje,
a tak¿e jak tworzyæ testy jednostkowe i korzystaæ z programowania sterowanego
testami. Nauczysz siê przekszta³caæ kod zawieraj¹cy problemy w taki, który jest
solidny i efektywny.
Nazwy klas i metod
Funkcje i listy argumentów
Rozdzielanie poleceñ i zapytañ
Stosowanie wyj¹tków
Komentarze
Formatowanie
Obiekty i struktury danych
Obs³uga b³êdów
Testy jednostkowe
Klasy i systemy
Wspó³bie¿noœæ
Oczyszczanie kodu
Niech stworzony przez Ciebie kod imponuje czystoœci¹!
265602302.001.png 265602302.002.png
SPIS TREŚCI
Słowo wstępne
13
Wstęp
19
1. Czysty kod
23
Niech stanie się kod...
24
W poszukiwaniu doskonałego kodu...
24
Całkowity koszt bałaganu
25
Rozpoczęcie wielkiej zmiany projektu
26
Postawa
27
Największa zagadka
28
Sztuka czystego kodu?
28
Co to jest czysty kod?
28
Szkoły myślenia
34
Jesteśmy autorami
35
Zasada skautów
36
Poprzednik i zasady
36
Zakończenie
36
Bibliografia
37
2. Znaczące nazwy
39
Wstęp
39
Używaj nazw przedstawiających intencje
40
Unikanie dezinformacji
41
Tworzenie wyraźnych różnic
42
Tworzenie nazw, które można wymówić
43
Korzystanie z nazw łatwych do wyszukania
44
Unikanie kodowania
45
Notacja węgierska
45
Przedrostki składników
46
Interfejsy i implementacje
46
Unikanie odwzorowania mentalnego
47
Nazwy klas
47
Nazwy metod
47
Nie bądź dowcipny
48
Wybieraj jedno słowo na pojęcie
48
Nie twórz kalamburów!
49
Korzystanie z nazw dziedziny rozwiązania
49
Korzystanie z nazw dziedziny problemu
49
Dodanie znaczącego kontekstu
50
Nie należy dodawać nadmiarowego kontekstu
51
Słowo końcowe
52
5
3. Funkcje
53
Małe funkcje!
56
Bloki i wcięcia
57
Wykonuj jedną czynność
57
Sekcje wewnątrz funkcji
58
Jeden poziom abstrakcji w funkcji
58
Czytanie kodu od góry do dołu — zasada zstępująca
58
Instrukcje switch
59
Korzystanie z nazw opisowych
61
Argumenty funkcji
62
Często stosowane funkcje jednoargumentowe
62
Argumenty znacznikowe
63
Funkcje dwuargumentowe
63
Funkcje trzyargumentowe
64
Argumenty obiektowe
64
Listy argumentów
65
Czasowniki i słowa kluczowe
65
Unikanie efektów ubocznych
65
Argumenty wyjściowe
66
Rozdzielanie poleceń i zapytań
67
Stosowanie wyjątków zamiast zwracania kodów błędów
67
Wyodrębnienie bloków try-catch
68
Obsługa błędów jest jedną operacją
69
Przyciąganie zależności w Error.java
69
Nie powtarzaj się
69
Programowanie strukturalne
70
Jak pisać takie funkcje?
70
Zakończenie
71
SetupTeardownIncluder
71
Bibliografia
73
4. Komentarze
75
Komentarze nie są szminką dla złego kodu
77
Czytelny kod nie wymaga komentarzy
77
Dobre komentarze
77
Komentarze prawne
77
Komentarze informacyjne
78
Wyjaśnianie zamierzeń
78
Wyjaśnianie
79
Ostrzeżenia o konsekwencjach
80
Komentarze TODO
80
Wzmocnienie
81
Komentarze Javadoc w publicznym API
81
Złe komentarze
81
Bełkot
81
Powtarzające się komentarze
82
Mylące komentarze
84
Komentarze wymagane
85
Komentarze dziennika
85
6
SPIS TREŚCI
Komentarze wprowadzające szum informacyjny
86
Przerażający szum
87
Nie używaj komentarzy, jeżeli można użyć funkcji lub zmiennej
88
Znaczniki pozycji
88
Komentarze w klamrach zamykających
88
Atrybuty i dopiski
89
Zakomentowany kod
89
Komentarze HTML
90
Informacje nielokalne
91
Nadmiar informacji
91
Nieoczywiste połączenia
91
Nagłówki funkcji
92
Komentarze Javadoc w niepublicznym kodzie
92
Przykład
92
Bibliografia
95
5. Formatowanie
97
Przeznaczenie formatowania
98
Formatowanie pionowe
98
Metafora gazety
99
Pionowe odstępy pomiędzy segmentami kodu
99
Gęstość pionowa
101
Odległość pionowa
101
Uporządkowanie pionowe
105
Formatowanie poziome
106
Poziome odstępy i gęstość
106
Rozmieszczenie poziome
107
Wcięcia
109
Puste zakresy
110
Zasady zespołowe
110
Zasady formatowania wujka Boba
111
6. Obiekty i struktury danych
113
Abstrakcja danych
113
Antysymetria danych i obiektów
115
Prawo Demeter
117
Wraki pociągów
118
Hybrydy
118
Ukrywanie struktury
119
Obiekty transferu danych
119
Active Record
120
Zakończenie
121
Bibliografia
121
7. Obsługa błędów
123
Użycie wyjątków zamiast kodów powrotu
124
Rozpoczynanie od pisania instrukcji try-catch-finally
125
Użycie niekontrolowanych wyjątków
126
Dostarczanie kontekstu za pomocą wyjątków
127
Definiowanie klas wyjątków w zależności od potrzeb wywołującego
127
SPIS TREŚCI
7
Definiowanie normalnego przepływu
129
Nie zwracamy null
130
Nie przekazujemy null
131
Zakończenie
132
Bibliografia
132
8. Granice
133
Zastosowanie kodu innych firm
134
Przeglądanie i zapoznawanie się z granicami
136
Korzystanie z pakietu log4j
136
Zalety testów uczących
138
Korzystanie z nieistniejącego kodu
138
Czyste granice
139
Bibliografia
140
9. Testyjednostkowe
141
Trzy prawa TDD
142
Zachowanie czystości testów
143
Testy zwiększają możliwości
144
Czyste testy
144
Języki testowania specyficzne dla domeny
147
Podwójny standard
147
Jedna asercja na test
149
Jedna koncepcja na test
150
F.I.R.S.T.
151
Zakończenie
152
Bibliografia
152
10. Klasy
153
Organizacja klas
153
Hermetyzacja
154
Klasy powinny być małe!
154
Zasada pojedynczej odpowiedzialności
156
Spójność
158
Utrzymywanie spójności powoduje powstanie wielu małych klas
158
Organizowanie zmian
164
Izolowanie modułów kodu przed zmianami
166
Bibliografia
167
11. Systemy
169
Jak budowałbyś miasto?
170
Oddzielenie konstruowania systemu od jego używania
170
Wydzielenie modułu main
171
Fabryki
172
Wstrzykiwanie zależności
172
Skalowanie w górę
173
Separowanie (rozcięcie) problemów
176
Pośredniki Java
177
8
SPIS TREŚCI
Zgłoś jeśli naruszono regulamin