| Cover | 1 |
---|
| Titel | 7 |
---|
| Impressum | 8 |
---|
| Inhaltsverzeichnis | 9 |
---|
| Vorwort des Herausgebers der englischen Ausgabe | 17 |
---|
| Einleitung | 21 |
---|
| Über den Autor | 27 |
---|
| Teil I: Beschleunigung | 29 |
---|
| Kapitel 1: Kunst oder Wissenschaft? | 31 |
| 1.1 Bau eines Hauses | 31 |
| 1.1.1 Das Problem mit Projekten | 32 |
| 1.1.2 Das Problem mit Phasen | 33 |
| 1.1.3 Abhängigkeiten | 33 |
| 1.2 Kultivieren eines Gartens | 34 |
| 1.2.1 Was lässt einen Garten gedeihen? | 35 |
| 1.3 Der Weg zur Ingenieurswissenschaft | 35 |
| 1.3.1 Software als Kunsthandwerk | 35 |
| 1.3.2 Heuristik | 37 |
| 1.3.3 Ältere Vorstellungen von Software Engineering | 38 |
| 1.3.4 Fortschritte beim Software Engineering | 39 |
| 1.4 Fazit | 40 |
| Kapitel 2: Checklisten | 43 |
| 2.1 Eine Gedächtnisstütze | 43 |
| 2.2 Checkliste für eine neue Codebasis | 45 |
| 2.2.1 Git verwenden | 46 |
| 2.2.2 Build automatisieren | 47 |
| 2.2.3 Alle Fehlermeldungen aktivieren | 51 |
| 2.3 Überprüfungen zu einer vorhandenen Codebasis hinzufügen | 56 |
| 2.3.1 Schrittweise Verbesserungen | 57 |
| 2.3.2 Hacken Sie Ihre Organisation | 58 |
| 2.4 Fazit | 59 |
| Kapitel 3: Komplexität in den Griff bekommen | 61 |
| 3.1 Ziel | 61 |
| 3.1.1 Nachhaltigkeit | 62 |
| 3.1.2 Nutzwert | 63 |
| 3.2 Warum Programmieren schwierig ist | 65 |
| 3.2.1 Die Gehirn-Metapher | 65 |
| 3.2.2 Code wird häufiger gelesen als geschrieben | 66 |
| 3.2.3 Verständlichkeit | 67 |
| 3.2.4 Geistige Arbeit | 68 |
| 3.3 Software Engineering | 70 |
| 3.3.1 Beziehung zur Informatik | 71 |
| 3.3.2 Menschenfreundlicher Code | 71 |
| 3.4 Fazit | 72 |
| Kapitel 4: Vertical Slice | 75 |
| 4.1 Beginnen Sie mit funktionierender Software | 75 |
| 4.1.1 Vom Dateneingang zur dauerhaften Datenspeicherung | 76 |
| 4.1.2 Minimaler Vertical Slice | 77 |
| 4.2 Laufendes Skelett | 78 |
| 4.2.1 Charakterisierungstest | 79 |
| 4.2.2 Arrange, Act, Assert | 81 |
| 4.2.3 Lockerung der statischen Analyse | 83 |
| 4.3 Von außen nach innen | 85 |
| 4.3.1 JSON entgegennehmen | 87 |
| 4.3.2 Eine Reservierung vornehmen | 89 |
| 4.3.3 Unit-Test | 93 |
| 4.3.4 DTO und Domänenmodell | 95 |
| 4.3.5 Fake-Objekt | 98 |
| 4.3.6 Schnittstelle für das Repository | 99 |
| 4.3.7 Objekte im Repository erstellen | 99 |
| 4.3.8 Abhängigkeiten konfigurieren | 101 |
| 4.4 Vervollständigen Sie den Slice | 102 |
| 4.4.1 Schema | 103 |
| 4.4.2 SQL-Repository | 104 |
| 4.4.3 Konfiguration mit der Datenbank | 106 |
| 4.4.4 Führen Sie einen Smoke Test durch | 107 |
| 4.4.5 Test der Außengrenze mit einer Fake-Datenbank | 108 |
| 4.5 Fazit | 110 |
| Kapitel 5: Kapselung | 111 |
| 5.1 Speichern Sie die Daten | 111 |
| 5.1.1 Prämisse der Priorität der Transformation | 111 |
| 5.1.2 Parametrisierter Test | 113 |
| 5.1.3 DTO ins Domänenmodell kopieren | 114 |
| 5.2 Validierung | 116 |
| 5.2.1 Ungültige oder fehlende Datumsangaben | 117 |
| 5.2.2 Rot-Grün-Refactor | 119 |
| 5.2.3 Natürliche Zahlen | 122 |
| 5.2.4 Robustheitsgrundsatz | 125 |
| 5.3 Schutz von Invarianten | 128 |
| 5.3.1 Immer gültig | 129 |
| 5.4 Fazit | 131 |
| Kapitel 6: Triangulierung | 133 |
| 6.1 Kurzzeit- und Langzeitgedächtnis | 133 |
| 6.1.1 Legacy Code und Gedächtnis | 134 |
| 6.2 Kapazität | 136 |
| 6.2.1 Überbuchung | 136 |
| 6.2.2 Advokat des Teufels | 139 |
| 6.2.3 Vorhandene Reservierungen | 142 |
| 6.2.4 Advokat des Teufels und Rot-Grün-Refactor | 144 |
<