Clean Code - Refactoring, Patterns, Testen und Techniken für sauberen Code - Deutsche Ausgabe

von: Robert C. Martin

MITP Verlags GmbH & Co. KG, 2013

ISBN: 9783826696398 , 480 Seiten

Format: PDF, ePUB, OL

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Apple iPod touch, iPhone und Android Smartphones Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 34,99 EUR

Mehr zum Inhalt

Clean Code - Refactoring, Patterns, Testen und Techniken für sauberen Code - Deutsche Ausgabe


 

Cover

1

Titel

3

Impressum

4

Inhaltsverzeichnis

5

Vorwort

15

Einführung

21

Kapitel 1: Sauberer Code

25

1.1 Code, Code und nochmals Code

26

1.2 Schlechter Code

27

1.3 Die Lebenszykluskosten eines Chaos

28

1.4 Denkschulen

40

1.5 Wir sind Autoren

41

1.6 Die Pfadfinder-Regel

43

1.7 Vorläufer und Prinzipien

43

1.8 Zusammenfassung

43

Kapitel 2: Aussagekräftige Namen

45

2.1 Einführung

45

2.2 Zweckbeschreibende Namen wählen

45

2.3 Fehlinformationen vermeiden

47

2.4 Unterschiede deutlich machen

49

2.5 Aussprechbare Namen verwenden

50

2.6 Suchbare Namen verwenden

51

2.7 Codierungen vermeiden

52

2.8 Mentale Mappings vermeiden

54

2.9 Klassennamen

55

2.10 Methodennamen

55

2.11 Vermeiden Sie humorige Namen

55

2.12 Wählen Sie ein Wort pro Konzept

56

2.13 Keine Wortspiele

56

2.14 Namen der Lösungsdomäne verwenden

57

2.15 Namen der Problemdomäne verwenden

57

2.16 Bedeutungsvollen Kontext hinzufügen

57

2.17 Keinen überflüssigen Kontext hinzufügen

60

2.18 Abschließende Worte

60

Kapitel 3: Funktionen

61

3.1 Klein!

64

3.2 Eine Aufgabe erfüllen

65

3.3 Eine Abstraktionsebene pro Funktion

67

3.4 Switch-Anweisungen

68

3.5 Beschreibende Namen verwenden

70

3.6 Funktionsargumente

71

3.7 Nebeneffekte vermeiden

75

3.8 Anweisung und Abfrage trennen

77

3.9 Ausnahmen sind besser als Fehler-Codes

77

3.10 Don’t Repeat Yourself

80

3.11 Strukturierte Programmierung

80

3.12 Wie schreibt man solche Funktionen?

81

3.13 Zusammenfassung

81

3.14 SetupTeardownIncluder

82

Kapitel 4: Kommentare

85

4.1 Kommentare sind kein Ersatz für schlechten Code

86

4.2 Erklären Sie im und durch den Code

87

4.3 Gute Kommentare

87

4.4 Schlechte Kommentare

92

Kapitel 5: Formatierung

109

5.1 Der Zweck der Formatierung

109

5.2 Vertikale Formatierung

110

5.3 Horizontale Formatierung

119

5.4 Team-Regeln

125

5.5 Uncle Bobs Formatierungsregeln

125

Kapitel 6: Objekte und Datenstrukturen

129

6.1 Datenabstraktion

129

6.2 Daten/Objekt-Anti-Symmetrie

131

6.3 Das Law of Demeter

133

6.4 Datentransfer-Objekte

136

6.5 Zusammenfassung

138

Kapitel 7: Fehler-Handling

139

7.1 Ausnahmen statt Rückgabe-Codes

139

7.2 Try-Catch-Finally-Anweisungen zuerst schreiben

141

7.3 Unchecked Exceptions

143

7.4 Ausnahmen mit Kontext auslösen

144

7.5 Definieren Sie Exception-Klassen mit Blick auf die Anforderungen des Aufrufers

144

7.6 Den normalen Ablauf definieren

146

7.7 Keine Null zurückgeben

147

7.8 Keine Null übergeben

148

7.9 Zusammenfassung

150

Kapitel 8: Grenzen

151

8.1 Mit Drittanbieter-Code arbeiten

151

8.2 Grenzen erforschen und kennen lernen

154

8.3 log4j kennen lernen

154

8.4 Lern-Tests sind besser als kostenlos

156

8.5 Code verwenden, der noch nicht existiert

157

8.6 Saubere Grenzen

158

Kapitel 9: Unit-Tests

159

9.1 Die drei Gesetze der TDD

160

9.2 Tests sauber halten

161

9.3 Saubere Tests

163

9.4 Ein assert pro Test

168

9.5 F.I.R.S.T.

171

9.6 Zusammenfassung

172

Kapitel 10: Klassen

173

10.1 Klassenaufbau

173

10.2 Klassen sollten klein sein!

174

10.3 Änderungen einplanen

185

Kapitel 11: Systeme

191

11.1 Wie baut man eine Stadt?

191

11.2 Konstruktion und Anwendung eines Systems trennen

192

11.3 Aufwärtsskalierung

196

11.4 Java-Proxies

200

11.5 Reine Java-AOP-Frameworks

202

11.6 AspectJ-Aspekte

205

11.7 Die Systemarchitektur testen

205

11.8 Die Entscheidungsfindung optimieren

207

11.9 Standards weise anwenden, wenn sie nachweisbar einen Mehrwert bieten

207

11.10 Systeme brauchen domänenspezifische Sprachen

208

11.11 Zusammenfassung

208

Kapitel 12: Emergenz

209

12.1 Saubere Software durch emergentes Design

209

12.2 Einfache Design-Regel 1: Alle Tests bestehen

210

12.3 Einfache Design-Regeln 2-4: Refactoring

211

12.4 Keine Duplizierung

211

12.5 Ausdrucksstärke

214

12.6 Minimale Klassen und Methoden

215

12.7 Zusammenfassung

215

Kapitel 13: Nebenläufigkeit

217

13.1 Warum Nebenläufigkeit?

218

13.2 Herausforderungen

220

13.3 Prinzipien einer defensiven Nebenläufigkeitsprogrammierung

221

13.4 Lernen Sie Ihre Library kennen

223

13.5 Lernen Sie Ihre Ausführungsmodelle kennen

224

13.6 Achten Sie auf Abhängigkeiten zwischen synchronisierten Methoden

226

13.7 Halten Sie synchronisierte Abschnitte klein

226

13.8 Korrekten Shutdown-Code zu schreiben, ist schwer

227

13.9 Threaded-Code testen

227

13.10 Zusammenfassung

232

Kapitel 14: Schrittweise Verfeinerung

235

14.1 Args-Implementierung

236

14.2 Args: der Rohentwurf

243

14.3 String-Argumente

258

14.4 Zusammenfassung

300

Kapitel 15: JUnit im Detail

301

15.1 Das JUnit-Framework

301

15.2 Zusammenfassung

316

Kapitel 16: Refactoring von SerialDate

317

16.1 Zunächst bring es zum Laufen!

318

16.2 Dann mach es richtig!

320

16.3 Zusammenfassung

336

Kapitel 17: Smells und Heuristiken

337

17.1 Kommentare

337

17.2 Umgebung

339

17.3 Funktionen

340

17.4 Allgemein

340

17.5 Java

362

17.6 Namen

366

17.7 Tests

370

17.8 Zusammenfassung

372

Anhang A: Nebenläufigkeit II

373

A.1 Client/Server-Beispiel

373

A.2 Mögliche Ausführungspfade

377

A.3 Lernen Sie Ihre Library kennen

383

A.4 Abhängigkeiten zwischen Methoden können nebenläufigen Code beschädigen

387

A.5 Den Durchsatz verbessern

391

A.6 Deadlock

394

A.7 Multithreaded-Code testen

398

A.8 Threadbasierten Code mit Tools testen

401

A.9 Zusammenfassung

402

A.10 Tutorial: kompletter Beispielcode

402

Anhang B: org.jfree.date.SerialDate

407

Anhang C: Literaturverweise

463

Epilog

465

Stichwortverzeichnis

467