czysty-kod.-podrecznik-dobrego-programisty full version, ebooki3
[ Pobierz całość w formacie PDF ]
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. Testy jednostkowe
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
Czyste biblioteki Java AOP
178
Aspekty w AspectJ
181
Testowanie architektury systemu
182
Optymalizacja podejmowania decyzji
183
Korzystaj ze standardów, gdy wnoszą realną wartość
183
Systemy wymagają języków dziedzinowych
184
Zakończenie
184
Bibliografia
185
12. Powstawanie projektu
187
Uzyskiwanie czystości projektu przez jego rozwijanie
187
Zasada numer 1 prostego projektu — system przechodzi wszystkie testy
188
Zasady numer 2 – 4 prostego projektu — przebudowa
188
Brak powtórzeń
189
Wyrazistość kodu
191
Minimalne klasy i metody
192
Zakończenie
192
Bibliografia
192
13. Współbieżność
193
W jakim celu stosować współbieżność?
194
Mity i nieporozumienia
195
Wyzwania
196
Zasady obrony współbieżności
196
Zasada pojedynczej odpowiedzialności
197
Wniosek — ograniczenie zakresu danych
197
Wniosek — korzystanie z kopii danych
197
Wniosek — wątki powinny być na tyle niezależne, na ile to tylko możliwe
198
Poznaj używaną bibliotekę
198
Kolekcje bezpieczne dla wątków
198
Poznaj modele wykonania
199
Producent-konsument
199
Czytelnik-pisarz
200
UcztujÄ…cy filozofowie
200
Uwaga na zależności pomiędzy synchronizowanymi metodami
201
Tworzenie małych sekcji synchronizowanych
201
Pisanie prawidłowego kodu wyłączającego jest trudne
202
Testowanie kodu wątków
202
Traktujemy przypadkowe awarie jako potencjalne problemy z wielowątkowością
203
Na początku uruchamiamy kod niekorzystający z wątków
203
Nasz kod wątków powinien dać się włączać
203
Nasz kod wątków powinien dać się dostrajać
204
Uruchamiamy więcej wątków, niż mamy do dyspozycji procesorów
204
Uruchamiamy testy na różnych platformach
204
Uzbrajamy nasz kod w elementy próbujące wywołać awarie i wymuszające awarie
205
Instrumentacja ręczna
205
Instrumentacja automatyczna
206
Zakończenie
207
Bibliografia
208
SPIS TREÅšCI
9
[ Pobierz całość w formacie PDF ]