
Clean Code Kochbuch
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions


Persons
Content
- Cover
- Titel
- Impressum
- Inhalt
- Geleitwort
- Vorwort
- 1 Clean Code
- Was ist ein Code-Smell?
- Was ist Refactoring?
- Was ist ein Rezept?
- Warum Clean Code?
- Lesbarkeit, Performance - oder beides?
- Arten von Software
- Maschinengenerierter Code
- Hinweise zu verwendeten Begriffen
- Entwurfsmuster
- Paradigmen der Programmiersprachen
- Objekte versus Klassen
- Veränderbarkeit
- 2 Festlegung der Axiome
- Einführung
- Warum ist es ein Modell?
- Warum ist es abstrakt?
- Warum ist es programmierbar?
- Warum ist es partiell?
- Warum ist es erklärend?
- Wieso geht es um Realität?
- Ableitung der Regeln
- Das einzig wahre Entwurfsprinzip für Software
- 3 Anämische Modelle
- Einführung
- Anämische Objekte in Rich Objects konvertieren
- Das Wesentliche Ihrer Objekte erkennen
- Objekte von Settern befreien
- Auf Generatoren verzichten, die anämischen Code produzieren
- Automatische Eigenschaften entfernen
- DTOs entfernen
- Leere Konstruktoren vervollständigen
- Getter entfernen
- Objektorgie verhindern
- Dynamische Eigenschaften entfernen
- 4 Primitive Obsession
- Einführung
- Small Objects erstellen
- Primitive Datentypen in Objekte umwandeln
- Assoziative Arrays in Objekte umwandeln
- Keine Strings missbrauchen
- Zeitstempel in Sequenzierung umwandeln
- Teilmengen als Objekte modellieren
- String-Validierungen in Objekte umwandeln
- Unnötige Eigenschaften entfernen
- Datumsintervalle berechnen
- 5 Mutabilität
- Einführung
- Variablen von var in const ändern
- Variablen als veränderlich deklarieren
- Veränderungen der Objektessenz verbieten
- Veränderliche const-Arrays vermeiden
- Lazy Initialization entfernen
- Veränderliche Konstanten einfrieren
- Seiteneffekte beseitigen
- Hoisting verhindern
- 6 Deklarativer Code
- Einführung
- Geltungsbereich wiederverwendeter Variablen begrenzen
- Code durch Aufteilung in Funktionen strukturieren
- Versionierte Methoden entfernen
- Doppelte Verneinungen entfernen
- Falsch zugeordnete Verantwortlichkeiten verschieben
- Explizite Iterationen ersetzen
- Entwurfsentscheidungen dokumentieren
- Magische Zahlen durch Konstanten ersetzen
- »Was« und »Wie« trennen
- Reguläre Ausdrücke dokumentieren
- Yoda-Conditions neu formulieren
- Scherzhaft benannte Methoden umbenennen
- Callback Hell vermeiden
- Gute Fehlermeldungen formulieren
- Magische Korrekturen vermeiden
- 7 Namensgebung
- Einführung
- Abkürzungen ausschreiben
- Hilfsfunktionen und -klassen umbenennen und aufteilen
- myObjects umbenennen
- Ergebnisvariablen umbenennen
- Variablen umbenennen, die nach Typen benannt sind
- Zu lange Namen kürzen
- Abstrakte Namen ändern
- Rechtschreibfehler korrigieren
- Klassennamen aus Attributen entfernen
- Vorangestellte Buchstaben aus Namen von Klassen und Interfaces entfernen
- Basic-/Do-Funktionen umbenennen
- Mit Pluralformen benannte Klassen auf Singularform ändern
- »Collection« aus Namen entfernen
- Präfix/Suffix »Impl« aus Klassennamen entfernen
- Argumente je nach Rolle bzw. Aufgabe benennen
- Redundante Parameternamen ändern
- Überflüssigen Kontext aus Namen entfernen
- Benennung als »data« vermeiden
- 8 Kommentare
- Einführung
- Kommentierten Code entfernen
- Veraltete Kommentare entfernen
- Temporäre logische Steuerungsanweisungen entfernen
- Getter-Kommentare entfernen
- Kommentare in Funktionsnamen umwandeln
- Kommentare innerhalb von Methoden entfernen
- Kommentare durch Tests ersetzen
- 9 Standards
- Einführung
- Codestandards befolgen
- Einrückungen standardisieren
- Schreibweisen vereinheitlichen
- Code auf Englisch schreiben
- Reihenfolge von Parametern vereinheitlichen
- Kleine Mängel beheben
- 10 Komplexität
- Einführung
- Wiederholten Code entfernen
- Einstellungen/Konfigurationen und Funktionsumschalter entfernen
- Zustand über Eigenschaften ändern
- Übertriebene Raffinesse aus dem Code entfernen
- Mehrere Promises parallel auflösen
- Lange Kollaborationsketten auflösen
- Methode in ein Objekt extrahieren
- Array-Konstruktoren überprüfen
- Poltergeist-Objekte entfernen
- 11 Aufgeblähter Code
- Einführung
- Überlange Methoden unterteilen
- Überflüssige Argumente reduzieren
- Überflüssige Variablen reduzieren
- Überflüssige Klammern entfernen
- Überflüssige Methoden entfernen
- Überzählige Attribute gruppieren
- Importlisten kürzen
- Funktionen mit mehreren Aufgaben aufteilen
- Überladene Interfaces verschlanken
- 12 YAGNI-Prinzip
- Einführung
- Toten Code entfernen
- Code anstelle von Diagrammen verwenden
- Refactoring von Klassen mit nur einer Unterklasse
- Interfaces entfernen, die nur an einer Stelle genutzt werden
- Missbräuchlich verwendete Entwurfsmuster entfernen
- Geschäftsspezifische Collections ersetzen
- 13 Fail-Fast-Prinzip
- Einführung
- Neuzuweisung von Variablen refaktorieren
- Vorbedingungen durchsetzen
- Striktere Parameter verwenden
- Standardfall bei Switch-Anweisungen entfernen
- Beim Iterieren über Collections Änderungen vermeiden
- Hash und Gleichheit neu definieren
- Refactoring von funktionalen Änderungen trennen
- 14 If-Anweisungen
- Einführung
- Akzidentelle If-Anweisungen durch Polymorphie ersetzen
- Flag-Variablen für Ereignisse deklarativ umbenennen
- Boolesche Variablen reifizieren
- Switch-/Case-/Elseif-Anweisungen ersetzen
- Hartcodierte Bedingungen durch Collections ersetzen
- Boolesche Bedingungen in Kurzschluss-Auswertungen umwandeln
- Implizites Else in explizites If umwandeln
- Verschachtelte Bedingungen refaktorieren
- Short-Circuit-Hacks vermeiden
- Verschachtelten Pfeilcode refaktorieren
- Rückgabe boolescher Werte für Bedingungsprüfungen vermeiden
- Vergleiche mit booleschen Werten ändern
- Ternäre Ausdrücke vereinfachen
- Nicht-polymorphe Funktionen in polymorphe umwandeln
- Gleichheitsvergleich ändern
- Hartcodierte Geschäftsbedingungen reifizieren
- Überflüssige boolesche Operatoren entfernen
- Verschachtelte ternäre Ausdrücke refaktorieren
- 15 Nullwerte
- Einführung
- Nullobjekte erstellen
- Optionale Verkettungen entfernen
- Optionale Attribute in eine Collection umwandeln
- Reale Objekte für Nullwerte verwenden
- Darstellung unbekannter Orte ohne Verwendung von null
- 16 Vorzeitige Optimierung
- Einführung
- IDs für Objekte vermeiden
- Vorzeitige Optimierungen entfernen
- Bitweise vorzeitige Optimierungen entfernen
- Übergeneralisierung reduzieren
- Strukturelle Optimierungen ändern
- »Boat Anchors« beseitigen
- Caches aus Domänenobjekten extrahieren
- Auf der Implementierung basierende Callback-Events entfernen
- Abfragen aus Konstruktoren entfernen
- Code aus Destruktoren entfernen
- 17 Kopplung
- Einführung
- Versteckte Annahmen explizit machen
- Singletons ersetzen
- God Objects aufspalten
- Klassen bei divergenten Änderungen teilen
- Spezielle als Flags genutzte Werte (wie 9999) in normale Werte umwandeln
- Shotgun Surgery vermeiden
- Optionale Argumente entfernen
- Feature Envy vorbeugen
- Vermittlerobjekte entfernen
- Standardargumente ans Ende verschieben
- Ripple-Effekt vermeiden
- Zufällige Methoden aus Geschäftsobjekten entfernen
- Geschäftslogik aus der Benutzeroberfläche entfernen
- Kopplung an Klassen verringern
- Datenklumpen beseitigen
- Unangemessene Intimität auflösen
- Fungible Objekte konvertieren
- 18 Globals
- Einführung
- Globale Funktionen reifizieren
- Statische Funktionen reifizieren
- Goto-Anweisungen durch strukturierten Code ersetzen
- Globale Klassen entfernen
- Globale Datumserstellung anpassen
- 19 Hierarchien
- Einführung
- Tiefe Vererbungshierarchien verflachen
- Jo-Jo-Hierarchien durchbrechen
- Subklassifizierung zur Wiederverwendung von Code auflösen
- »Ist-ein«-Beziehung durch Verhalten ersetzen
- Verschachtelte Klassen entfernen
- Isolierte Klassen umbenennen
- Konkrete Klassen als final deklarieren
- Klassenvererbung explizit definieren
- Klassen ohne Verhalten entfernen
- Keine vorzeitige Klassenbildung vornehmen
- Geschützte Attribute entfernen
- Leere Implementierungen vervollständigen
- 20 Testen
- Einführung
- Private Methoden testen
- Beschreibungen zu Assertions hinzufügen
- assertTrue in spezifischere Assertions konvertieren
- Mock-Objekte durch echte Objekte ersetzen
- Generische Assertions verfeinern
- Unzuverlässige Tests entfernen
- Vergleiche von Gleitkommazahlen vermeiden
- Realistische Daten statt Testdaten verwenden
- Verletzung der Kapselung vermeiden
- Irrelevante Testinformationen entfernen
- Keine Pull Requests ohne Testabdeckung zulassen
- Tests umformulieren, die von Datumswerten abhängen
- Eine neue Programmiersprache lernen
- 21 Technische Schulden
- Einführung
- Produktionsabhängigen Code entfernen
- Fehlertracker entfernen
- Warnungen/Strict-Modus nicht ausschalten
- ToDos und FixMes verhindern und entfernen
- 22 Ausnahmen
- Einführung
- Leere Ausnahmeblöcke entfernen
- Unnötige Ausnahmen entfernen
- Keine Ausnahmen bei erwarteten Fällen auslösen
- Verschachtelte Try/Catch-Blöcke vereinfachen
- Rückgabecodes durch Ausnahmen ersetzen
- Verschachtelten Pfeilcode refaktorieren
- Low-Level-Fehler vor Endbenutzern verstecken
- Try-Blöcke kurz halten
- 23 Metaprogrammierung
- Einführung
- Metaprogrammierung entfernen
- Anonyme Funktionen reifizieren
- Auf Präprozessoren verzichten
- Dynamische Methoden entfernen
- 24 Datentypen
- Einführung
- Typprüfungen entfernen
- Mit truthy-Werten umgehen
- Gleitkommazahlen in Dezimalzahlen konvertieren
- 25 Sicherheit
- Einführung
- Benutzereingaben bereinigen
- Sequenzielle IDs ändern
- Paketabhängigkeiten entfernen
- Problematische reguläre Ausdrücke ersetzen
- Sichere Deserialisierung von Objekten
- Glossar
- Index
- Über den Autor
- Kolophon
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.