Five lines of code: Clean Code durch gezieltes Refactoring
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | German |
Veröffentlicht: |
Bonn
Rheinwerk
2023
|
Ausgabe: | 1. Auflage |
Schriftenreihe: | Rheinwerk Computing
|
Schlagworte: | |
Online-Zugang: | Inhaltstext Inhaltsverzeichnis Inhaltsverzeichnis |
Beschreibung: | 388 Seiten Illustrationen 24 cm x 19 cm |
ISBN: | 9783836292245 3836292246 |
Internformat
MARC
LEADER | 00000nam a22000008c 4500 | ||
---|---|---|---|
001 | BV048601306 | ||
003 | DE-604 | ||
005 | 20230209 | ||
007 | t | ||
008 | 221208s2023 gw a||| |||| 00||| ger d | ||
015 | |a 22,N25 |2 dnb | ||
016 | 7 | |a 1260158284 |2 DE-101 | |
020 | |a 9783836292245 |c Broschur : EUR 34.90 (DE), EUR 35.90 (AT), CHF 44.90 (freier Preis) |9 978-3-8362-9224-5 | ||
020 | |a 3836292246 |9 3-8362-9224-6 | ||
024 | 3 | |a 9783836292245 | |
028 | 5 | 2 | |a Bestellnummer: 459/09224 |
035 | |a (OCoLC)1355302805 | ||
035 | |a (DE-599)DNB1260158284 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a ger | |
044 | |a gw |c XA-DE-NW | ||
049 | |a DE-92 |a DE-20 |a DE-860 |a DE-1043 |a DE-706 |a DE-19 |a DE-1102 |a DE-859 |a DE-573 | ||
084 | |a ST 230 |0 (DE-625)143617: |2 rvk | ||
084 | |a ST 233 |0 (DE-625)143620: |2 rvk | ||
084 | |8 1\p |a 004 |2 23sdnb | ||
100 | 1 | |a Clausen, Christian |e Verfasser |0 (DE-588)1274389526 |4 aut | |
240 | 1 | 0 | |a Five lines of code |
245 | 1 | 0 | |a Five lines of code |b Clean Code durch gezieltes Refactoring |c Christian Clausen |
250 | |a 1. Auflage | ||
264 | 1 | |a Bonn |b Rheinwerk |c 2023 | |
300 | |a 388 Seiten |b Illustrationen |c 24 cm x 19 cm | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a Rheinwerk Computing | |
650 | 0 | 7 | |a Softwaretest |0 (DE-588)4132652-0 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Fehlerbehandlung |0 (DE-588)4153834-1 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Programmcode |0 (DE-588)4734701-6 |2 gnd |9 rswk-swf |
653 | |a Clean Code | ||
653 | |a Refactoring | ||
653 | |a Optimierung | ||
653 | |a Code Smells | ||
653 | |a TypeScript | ||
653 | |a Agile Development | ||
653 | |a Agilität | ||
653 | |a Styleguide | ||
653 | |a OOP-Sprachen | ||
653 | |a Software-Entwicklung | ||
653 | |a Programmierung | ||
653 | |a Programmieren | ||
653 | |a Programmiersprachen | ||
653 | |a Bücher Lernen Kurse Grundlagen Seminare Tutorials Workshops Training | ||
653 | |a Codebasen | ||
689 | 0 | 0 | |a Programmcode |0 (DE-588)4734701-6 |D s |
689 | 0 | 1 | |a Softwaretest |0 (DE-588)4132652-0 |D s |
689 | 0 | 2 | |a Fehlerbehandlung |0 (DE-588)4153834-1 |D s |
689 | 0 | |5 DE-604 | |
710 | 2 | |a Rheinwerk Verlag |0 (DE-588)1081738405 |4 pbl | |
856 | 4 | 2 | |m X:MVB |q text/html |u http://deposit.dnb.de/cgi-bin/dokserv?id=d7db32b62881487a851389e6fd978e2f&prov=M&dok_var=1&dok_ext=htm |3 Inhaltstext |
856 | 4 | 2 | |m B:DE-101 |q application/pdf |u https://d-nb.info/1260158284/04 |3 Inhaltsverzeichnis |
856 | 4 | 2 | |m DNB Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033976831&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
883 | 1 | |8 1\p |a vlb |d 20220618 |q DE-101 |u https://d-nb.info/provenance/plan#vlb |
Datensatz im Suchindex
_version_ | 1805075912294662144 |
---|---|
adam_text |
INHALT
MATERIALIEN
ZUM
BUCH
.
16
VORWORT
.
17
EINFUEHRUNG
.
19
DANKSAGUNGEN
.
23
DER
AUTOR
.
25
DER
UEBERSETZER
.
25
1
REFACTORINGS
FUER
REFACTORING
27
1.1
WAS
IST
REFACTORING?.
28
1.2
FAEHIGKEITEN:
WAS
SOLLTE
ICH
REFACTORN?
.
29
1.2.1
EIN
BEISPIEL
FUER
CODE
SMELL
.
30
1.2.2
EIN
BEISPIEL
FUER
EINE
REGEL
.
30
1.3
KULTUR:
WANN
SOLLTE
ICH
REFACTORN?
.
31
1.3.1
REFACTORING
IN
EINEM
LEGACY-SYSTEM
.
33
1.3.2
WANN
SOLLTE
ICH
NICHT
REFACTORN?
.
33
1.4
WERKZEUGE:
WIE
SOLLTE
ICH
(SICHER)
REFACTORN?
.
33
1.5
WERKZEUGE
FUER
DEN
ANFANG
.
34
1.5.1
PROGRAMMIERSPRACHE:
TYPESCRIPT
.
34
1.5.2
EDITOR:
VISUAL
STUDIO
CODE
.
35
1.5.3
VERSIONSKONTROLLE:
GIT
.
35
1.6
DAS
DURCHGEHENDE
BEISPIEL:
EIN
2D-RAETSELSPIEL
.
36
1.6.1
UEBUNG
MACHT
DEN
MEISTER:
EINE
ZWEITE
CODEBASIS
.
38
1.7
EIN
WORT
ZU
SOFTWARE
AUS
DER
ECHTEN
WELT
.
38
1.8
ZUSAMMENFASSUNG.
39
2
EIN
BLICK
UNTER
DIE
HAUBE
41
2.1
LESBARKEIT
UND
WARTBARKEIT
VERBESSERN
.
41
2.1.1
CODE
VERBESSERN
.
41
2.1.2
CODE
WARTEN
.
OHNE
ZU
AENDERN,
WAS
ER
TUT
.
44
2.2
GESCHWINDIGKEIT,
FLEXIBILITAET
UND
STABILITAET
GEWINNEN
.
45
7
2.2.1
KOMPOSITION
STATT
VERERBUNG
.
45
2.2.2
CODE
AENDERN
DURCH
HINZUFUEGEN
STATT
UMSCHREIBEN
.
46
2.3
REFACTORING
UND
DIE
TAEGLICHE
ARBEIT
.
47
2.3.1
REFACTORING
ALS
LERNMETHODE
.
48
2.4
DIE
DOMAENE
EINER
SOFTWARE
DEFINIEREN
.
48
2.5
ZUSAMMENFASSUNG
.
49
TEIL
I
DAS
REFACTORING
EINES
COMPUTERSPIELS
ALS
LERNBEISPIEL
3
LANGE
FUNKTIONEN
ZERSCHLAGEN
53
3.1
UNSERE
ERSTE
REGEL:
WARUM
FUENF
ZEILEN?
.
54
3.1.1
REGEL:
FUENF
ZEILEN
.
54
3.2
EIN
REFACTORING,
UM
FUNKTIONEN
AUFZUBRECHEN
.
57
3.2.1
REFACTORING:
METHODE
EXTRAHIEREN
.
62
3.3
FUNKTIONEN
TEILEN,
UM
ABSTRAKTIONSEBENEN
ZU
TRENNEN
.
66
3.3.1
REGEL:
AUFRUFEN
ODER
UEBERGEBEN
.
67
3.3.2
DIE
REGEL
ANWENDEN
.
68
3.4
EIGENSCHAFTEN
EINES
GUTEN
FUNKTIONSNAMENS
.
69
3.5
FUNKTIONEN
AUFBRECHEN,
DIE
ZU
VIEL
TUN
.
72
3.5.1
REGEL:
IF
NUR
AM
ANFANG
.
72
3.5.2
DIE
REGEL
ANWENDEN
.
74
3.6
ZUSAMMENFASSUNG
.
76
4
TYPEN
RICHTIG
NUTZEN
77
4.1
REFACTORING
EINER
EINFACHEN
.
77
4.1.1
REGEL:
BENUTZE
NIEMALS
IF
MIT
ELSE
.
78
4.1.2
DIE
REGEL
ANWENDEN
.
80
4.1.3
REFACTORING:
TYPCODES
DURCH
KLASSEN
ERSETZEN
.
82
4.1.4
CODE
IN
KLASSEN
SCHIEBEN
.
86
4.1.5
REFACTORING:
CODE
IN
KLASSEN
SCHIEBEN
.
89
4.1.6
UEBERFLUESSIGE
METHODEN
INTEGRIEREN
.
95
4.1.7
REFACTORING:
METHODE
INTEGRIEREN
.
96
8
4.2
REFACTORING
EINER
GROSSEN
IF-ANWEISUNG
.
98
4.2.1
GENERALITAET
ENTFERNEN
.
103
4.2.2
REFACTORING:
METHODE
SPEZIALISIEREN
.
105
4.2.3
DAS
EINZIGE
ERLAUBTE
SWITCH
.
108
4.2.4
REGEL:
BENUTZE
NIEMALS
SWITCH
.
109
4.2.5
DAS
IF
LOESCHEN
.
111
4.3
MIT
DOPPELTEM
CODE
UMGEHEN
.
114
4.3.1
HAETTEN
WIR
NICHT
STATT
DES
INTERFACES
EINE
ABSTRAKTE
KLASSE
BENUTZEN
KOENNEN?
.
116
4.3.2
REGEL:
ERBE
NUR
VON
INTERFACES
.
116
4.3.3
WAS
SOLL
DIESER
GANZE
DOPPELTE
CODE?
.
118
4.4
REFACTORING
VON
ZWEI
KOMPLEXEN
IF-ANWEISUNGEN
.
118
4.5
TOTEN
CODE
ENTFERNEN
.
122
4.5.1
REFACTORING:
VERSUCHSWEISE
LOESCHEN
UND
KOMPILIEREN
.
123
4.6
ZUSAMMENFASSUNG
.
124
5
AEHNLICHEN
CODE
ZUSAMMENFUEHREN
127
5.1
AEHNLICHE
KLASSEN
ZUSAMMENFUEHREN
.
128
5.1.1
REFACTORING:
AEHNLICHE
KLASSEN
ZUSAMMENFUEHREN
.
138
5.2
EINFACHE
BEDINGUNGEN
ZUSAMMENFUEHREN
.
145
5.2.1
REFACTORING:
IF S
ZUSAMMENFUEHREN
.
148
5.3
KOMPLEXE
BEDINGUNGEN
ZUSAMMENFUEHREN
.
150
5.3.1
RECHENREGELN
FUER
BEDINGUNGEN
.
151
5.3.2
REGEL:
BENUTZE
REINE
BEDINGUNGEN
.
152
5.3.3
GRUNDRECHENARTEN
FUER
BEDINGUNGEN
ANWENDEN
.
155
5.4
CODE
IN
VERSCHIEDENEN
KLASSEN
ZUSAMMENFUEHREN
.
156
5.4.1
UML-KLASSENDIAGRAMME
ZEIGEN
BEZIEHUNGEN
ZWISCHEN
KLASSEN
.
163
5.4.2
REFACTORING:
STRATEGIE
EINFUEHREN
.
165
5.4.3
REGEL:
KEINE
INTERFACES
MIT
NUR
EINER
IMPLEMENTIERUNG
.
174
5.4.4
REFACTORING:
INTERFACE
AUS
IMPLEMENTIERUNG
EXTRAHIEREN
.
175
5.5
AEHNLICHE
FUNKTIONEN
ZUSAMMENFUEHREN
.
178
5.6
AEHNLICHEN
CODE
ZUSAMMENFUEHREN
.
182
5.7
ZUSAMMENFASSUNG
.
187
9
6
DIE
DATEN
VERTEIDIGEN
189
6.1
KAPSELUNG
OHNE
GETTER
.
189
6.1.1
REGEL:
BENUTZE
KEINE
GETTER
UND
SETTER
.
189
6.1.2
DIE
REGEL
ANWENDEN
.
192
6.1.3
REFACTORING:
GETTER
UND
SETTER
LOESCHEN
.
194
6.1.4
DEN
LETZTEN
GETTER
LOESCHEN
.
197
6.2
EINFACHE
DATEN
KAPSELN
.
201
6.2.1
REGEL:
VERMEIDE
GEMEINSAME
AFFIXE
.
201
6.2.2
DIE
REGEL
ANWENDEN
.
203
6.2.3
REFACTORING:
DATEN
KAPSELN
.
210
6.3
KOMPLEXE
DATEN
KAPSELN
.
214
6.4
INVARIANTE
REIHENFOLGEN
ENTFERNEN
.
222
6.4.1
REFACTORING:
REIHENFOLGE
ERZWINGEN
.
223
6.5
EIN
ANDERES
VORGEHEN,
UM
ENUMS
ZU
LOESCHEN
.
226
6.5.1
ENUMERATIONEN
DURCH
PRIVATE
KONSTRUKTOREN
.
226
6.5.2
ZAHLEN
AUF
KLASSEN
ABBILDEN
.
229
6.6
ZUSAMMENFASSUNG
.
232
TEIL
II
DAS
GELERNTE
IN
DIE
PRAXIS
UEBERTRAGEN
7
MIT
DEM
COMPILER
ZUSAMMENARBEITEN
235
7.1
DEN
COMPILER
KENNENLERNEN
.
236
7.1.1
SCHWAECHE:
DAS
HALTEPROBLEM
BEGRENZT
UNSER
WISSEN
ZUR
KOMPILIERZEIT
.
236
7.1.2
STAERKE:
ERREICHBARKEIT
GARANTIERT,
DASS
EINE
METHODE
RETURN
ERREICHT
.
237
7.1.3
STAERKE:
DEFINITIVE
ZUWEISUNG
VERHINDERT
ZUGRIFF
AUF
UNINITIALISIERTE
VARIABLEN
.
238
7.1.4
STAERKE:
ZUGRIFFSKONTROLLE
HILFT
BEIM
KAPSELN
VON
DATEN
.
239
7.1.5
STAERKE:
TYPPRUEFUNG
BEWEIST
EIGENSCHAFTEN
.
239
7.1.6
SCHWAECHE:
NULL
ZU
DEREFERENZIEREN
VERURSACHT
ABSTUERZE
.
241
7.1.7
SCHWAECHE:
ARITHMETISCHE
FEHLER
VERURSACHEN
UEBERLAEUFE
UND
ABSTUERZE
.
241
7.1.8
SCHWAECHE:
ZUGRIFF
AUSSERHALB
DER
ARRAY-GRENZEN
VERURSACHT
ABSTUERZE
.
242
7.1.9
SCHWAECHE:
ENDLOSSCHLEIFEN
LASSEN
UNSERE
ANWENDUNG
STILLSTEHEN
.
242
7.1.10
SCHWAECHE:
DEADLOCKS
UND
WETTLAUFSITUATIONEN
VERURSACHEN
UNBEABSICHTIGTES
VERHALTEN
.
243
10
7.2
DEN
COMPILER
BENUTZEN
.
245
7.2.1
DEN
COMPILER
ZUM
ARBEITEN
BRINGEN
.
246
7.2.2
KAEMPFE
NICHT
GEGEN
DEN
COMPILER
.
249
7.3
VERTRAUE
DEM
COMPILER
.
255
7.3.1
LEHRE
DEN
COMPILER
INVARIANTEN
.
255
7.3.2
BEACHTE
SEINE
WARNUNGEN
.
257
7.4 VERTRAUE
NUR
DEM
COMPILER
.
258
7.5
ZUSAMMENFASSUNG
.
259
8
FINGER
WEG
VON
KOMMENTAREN
261
8.1
VERALTETE
KOMMENTARE
LOESCHEN
.
263
8.2
AUSKOMMENTIERTEN
CODE
LOESCHEN
.
263
8.3
UEBERFLUESSIGE
KOMMENTARE
LOESCHEN
.
264
8.4
KOMMENTARE
IN
METHODENNAMEN
UMSETZEN
.
265
8.4.1
KOMMENTARE
ZUR
PLANUNG
NUTZEN
.
265
8.5
KOMMENTARE
BEHALTEN,
DIE
INVARIANTEN
DOKUMENTIEREN
.
266
8.5.1
PROZESSINVARIANTEN
.
266
8.6
ZUSAMMENFASSUNG
.
267
9
LERNE,
DAS
LOESCHEN
ZU
LIEBEN
269
9.1
CODE
LOESCHEN:
DAS
NAECHSTE
ABENTEUER
.
270
9.2
CODE
LOESCHEN,
UM
ANFALLENDE
KOMPLEXITAETZU
REDUZIEREN
.
271
9.2.1
TECHNISCHES
UNWISSEN
AUS
MANGELNDER
ERFAHRUNG
.
271
9.2.2
TECHNISCHER
ABRAUM
AUS
ZEITDRUCK
.
272
9.2.3
TECHNISCHE
SCHULD
AUS
SACHZWAENGEN
.
273
9.2.4
TECHNISCHE
REIBUNG
AUS
WACHSTUM
.
273
9.3
CODE
NACH
VERTRAUTHEIT
KATEGORISIEREN
.
274
9.4
CODE
IN
EINEM
LEGACY-SYSTEM
LOESCHEN
.
275
9.4.1
CODE
VERSTEHEN
NACH
ART
DER
WUERGEFEIGE
.
275
9.4.2
DEN
CODE
MIT
DEM
WUERGEFEIGENVERFAHREN
VERBESSERN
.
278
11
9.5
CODE
AUS
EINEM
EINGEFRORENEN
PROJEKT
LOESCHEN
.
278
9.5.1
DAS
GEWUENSCHTE
ERGEBNIS
ZUM
DEFAULT
MACHEN
.
279
9.5.2
ABRAUM
REDUZIEREN
DURCH
PROTOTYPEN
.
279
9.6
BRANCHES
AUS
DER
VERSIONSKONTROLLE
LOESCHEN
.
280
9.6.1
ABRAUM
REDUZIEREN
DURCH
BRANCH
LIMITS
.
281
9.7
CODEDOKUMENTATION
LOESCHEN
.
282
9.7.1
ALGORITHMUS,
UM
HERAUSZUFINDEN,
WIE
WIR
WISSEN
FESTHALTEN
.
283
9.8
TESTCODE
LOESCHEN
.
284
9.8.1
OPTIMISTISCHE
TESTS
LOESCHEN
.
284
9.8.2
PESSIMISTISCHE
TESTS
LOESCHEN
.
284
9.8.3
INSTABILE
TESTS
REPARIEREN
ODER
LOESCHEN
.
284
9.8.4
REFACTORINGS
DURCHFUEHREN,
UM
KOMPLEXE
TESTFAELLE
LOSZUWERDEN
.
285
9.8.5
TESTS
SPEZIALISIEREN,
UM
SIE
ZU
BESCHLEUNIGEN
.
285
9.9
KONFIGURATIONSCODE
LOESCHEN.
286
9.9.1
KONFIGURATION
ZEITLICH
KATEGORISIEREN
.
286
9.10
CODE
LOESCHEN,
UM
BIBLIOTHEKEN
LOSZUWERDEN
.
288
9.10.1
DEN
EINSATZ
VON
BIBLIOTHEKEN
EINSCHRAENKEN
.
290
9.11
CODE
AUS
FUNKTIONIERENDEN
FEATURES
ENTFERNEN
.
291
9.12
ZUSAMMENFASSUNG
.
292
10
KEINE
ANGST
VOR
NEUEM
CODE
293
10.1
UNSICHERHEIT
AKZEPTIEREN:
IN
DIE
GEFAHR
EINTRETEN
.
294
10.2
PROTOTYPEN:
GEGEN
DIE
ANGST,
DAS
FALSCHE
ZU
ENTWICKELN
.
294
10.3
VERHAELTNISMAESSIGE
ARBEIT:
GEGEN
DIE
ANGST
VOR
VERSCHWENDUNG
UND
RISIKO
.
296
10.4
SCHRITTWEISE
VERBESSERUNG:
GEGEN
DIE
ANGST
VOR
IMPERFEKTION
.
297
10.5
WIE
COPY
&
PASTE
UNSERE
GESCHWINDIGKEIT
BEEINFLUSST
.
298
10.6
VERAENDERN
DURCH
HINZUFUEGEN:
GEPLANTE
ERWEITERBARKEIT
.
299
10.7
VERAENDERN
DURCH
HINZUFUEGEN
ERLAUBT
ABWAERTSKOMPATIBILITAET
.
300
10.8
VERAENDERN
DURCH
HINZUFUEGEN
MIT
FEATURESCHALTERN
.
302
10.9
VERAENDERN
DURCH
HINZUFUEGEN
MIT
VERZWEIGUNG
DURCH
ABSTRAKTION
.
306
10.10
ZUSAMMENFASSUNG
.
309
12
11
FOLGE
DER
STRUKTUR
IM
CODE
311
11.1
STRUKTUREN
EINTEILEN
NACH
WIRKUNGSBEREICH
UND
HERKUNFT
.
311
11.2
DREI
ARTEN,
WIE
CODE
VERHALTEN
SPIEGELT
.
313
11.2.1
VERHALTEN
IM
KONTROLLFLUSS
AUSDRUECKEN
.
313
11.2.2
VERHALTEN
IN
DER
STRUKTUR
DER
DATEN
AUSDRUECKEN
.
315
11.2.3
VERHALTEN
IN
DEN
DATEN
AUSDRUECKEN
.
319
11.3
CODE
HINZUFUEGEN,
UM
STRUKTUR
ZU
BETONEN
.
321
11.4
BEOBACHTEN
STATT
VORHERSAGEN
-
EMPIRISCHE
TECHNIKEN
EINSETZEN
.
322
11.5
SICHERHEIT
GEWINNEN,
OHNE
DEN
CODE
ZU
VERSTEHEN
.
323
11.5.1
SICHERHEIT
DURCH
TESTS
.
323
11.5.2
SICHERHEIT
DURCH
HANDWERKSKUNST
.
323
11.5.3
SICHERHEIT
DURCH
WERKZEUGE
.
323
11.5.4
SICHERHEIT
DURCH
FORMALE
VERIFIKATION
.
324
11.5.5
SICHERHEIT
DURCH
FEHLERTOLERANZ
.
324
11.6
UNGENUTZTE
STRUKTUREN
FINDEN
.
324
11.6.1
LEERZEILEN
NUTZEN:
EXTRAHIEREN
UND
KAPSELN
.
325
11.6.2
DOPPELTEN
CODE
ZUSAMMENFUEHREN
.
326
11.6.3
GEMEINSAME
AFFIXE
NUTZEN-DURCH
KAPSELUNG
.
330
11.6.4
DEN
LAUFZEITTYP
BEARBEITEN
-
MIT
DYNAMISCHEM
DISPATCH
.
332
11.7
ZUSAMMENFASSUNG
.
333
12
VERMEIDE
OPTIMIERUNG
UND
GENERALITAET
335
12.1
NACH
EINFACHHEIT
STREBEN
.
336
12.2
VERALLGEMEINERN
-
WANN
UND
WIE
.
338
12.2.1
MINIMALE
LOESUNGEN
BAUEN,
UM
GENERALITAET
ZU
VERMEIDEN
.
338
12.2.2
DINGE
AEHNLICHER
STABILITAET
ZUSAMMENFUEHREN
.
339
12.2.3
UNNOETIGE
GENERALITAET
AUSMERZEN
.
339
12.3
OPTIMIEREN
-
WANN
UND
WIE
.
340
12.3.1
REFACTORING
VOR
OPTIMIERUNG
.
341
12.3.2
OPTIMIERE
NACH
DER
ENGPASSTHEORIE
.
343
12.3.3
OPTIMIERE
VON
METRIKEN
GEFUEHRT
.
346
12.3.4
DIE
RICHTIGEN
ALGORITHMEN
UND
DATENSTRUKTUREN
WAEHLEN
.
346
12.3.5
CACHES
BENUTZEN
.
348
12.3.6
OPTIMIERTEN
CODE
ISOLIEREN
.
350
12.4
ZUSAMMENFASSUNG
.
352
13
13
SCHLECHTER
CODE
SOLL
SCHLECHT
AUSSEHEN
353
13.1
AUF
PROZESSPROBLEME
MIT
SCHLECHTEM
CODE
AUFMERKSAM
MACHEN
.
353
13.2
TRENNUNG
IN
SAUBEREN
UND
PROBLEMATISCHEN
CODE
.
355
13.2.1
DIE
THEORIE
DER ZERBROCHENEN
FENSTER
.
356
13.3
ANSAETZE,
SCHLECHTEN
CODE
ZU
DEFINIEREN
.
356
13.3.1
DIE
REGELN
AUS
DIESEM
BUCH:
EINFACH
UND
KONKRET
.
356
13.3.2
CODE
SMELLS:
KOMPLETT
UND
ABSTRAKT
.
357
13.3.3
ZYKLOMATISCHE
KOMPLEXITAET:
ALGORITHMISCH
(OBJEKTIV)
.
357
13.3.4
KOGNITIVE
KOMPLEXITAET:
ALGORITHMISCH
(SUBJEKTIV)
.
358
13.4
REGELN
FUER
SICHEREN
VANDALISMUS
.
359
13.5
METHODEN
FUER
SICHEREN
VANDALISMUS
.
359
13.5.1
ENUMS
BENUTZEN
.
360
13.5.2
INT
UND
STRING
ALS
TYPCODES
BENUTZEN
.
361
13.5.3
MAGISCHE
ZAHLEN
IN
DEN
CODE
SCHREIBEN
.
362
13.5.4
KOMMENTARE
HINZUFUEGEN
.
362
13.5.5
LEERZEILEN
UND-ZEICHEN
EINFUEGEN
.
363
13.5.6
DINGE
NACH
NAMEN
GRUPPIEREN
.
364
13.5.7
NAMEN
UM
KONTEXT
ERWEITERN
.
365
13.5.8
LANGE
METHODEN
SCHAFFEN
.
366
13.5.9
METHODEN
VIELE
PARAMETER
GEBEN
.
367
13.5.10
GETTER
UND
SETTER
BENUTZEN
.
368
13.6
ZUSAMMENFASSUNG.
369
14
ZUM
ABSCHLUSS
371
14.1
EIN
RUECKBLICK
AUF
DIE
REISE
IN
DIESEM
BUCH
.
371
14.1.1
EINFUEHRUNG:
WAS
UND
WARUM?
.
371
14.1.2
TEIL
I:
KONKRETE
ANWENDUNGEN
.
372
14.1.3
TEIL
II:
DEN
HORIZONT
ERWEITERN
.
372
14.2
DIE
PHILOSOPHIE
DAHINTER
.
372
14.2.1
DIE
SUCHE
NACH
IMMER
KLEINEREN
SCHRITTEN
.
372
14.2.2
DIE
SUCHE
NACH
DER
ZUGRUNDE
LIEGENDEN
STRUKTUR
.
373
14.2.3
DIE
REGELN
ZUR
ZUSAMMENARBEIT
EINSETZEN
.
374
14.2.4
DAS
TEAM
UEBER
DIE
PERSON
STELLEN
.
374
14.2.5
EINFACHHEIT
UEBER
VOLLSTAENDIGKEIT
STELLEN
.
375
14.2.6
OBJEKTE
ODER
FUNKTIONEN
HOEHERER
ORDNUNG
BENUTZEN
.
376
14
14.3
WIE
MACHE
ICH
WEITER?
.
377
14.3.1
DIE
MIKROARCHITEKTUR-STRASSE
.
377
14.3.2
DER
MAKROARCHITEKTUR-WEG
.
377
14.3.3
DIE
SOFTWAREQUALITAETS-ROUTE
.
378
14.4
ZUSAMMENFASSUNG.
378
ANHANG
381
A
DIE
WERKZEUGE
FUER
TEIL
I
INSTALLIEREN
.
381
A.L
NODE.JS
.
381
A.2
TYPESCRIPT
.
381
A.3
VISUAL
STUDIO
CODE
.
381
A.4
GIT
.
382
A.5
DAS
TYPESCRIPT-PROJEKT
EINRICHTEN
.
382
A.6
DAS
TYPESCRIPT-PROJEKT
BAUEN
.
382
A.7
WIE
DU
DEN
LEVEL
AENDERST
.
383
INDEX
.
385
15 |
adam_txt |
INHALT
MATERIALIEN
ZUM
BUCH
.
16
VORWORT
.
17
EINFUEHRUNG
.
19
DANKSAGUNGEN
.
23
DER
AUTOR
.
25
DER
UEBERSETZER
.
25
1
REFACTORINGS
FUER
REFACTORING
27
1.1
WAS
IST
REFACTORING?.
28
1.2
FAEHIGKEITEN:
WAS
SOLLTE
ICH
REFACTORN?
.
29
1.2.1
EIN
BEISPIEL
FUER
CODE
SMELL
.
30
1.2.2
EIN
BEISPIEL
FUER
EINE
REGEL
.
30
1.3
KULTUR:
WANN
SOLLTE
ICH
REFACTORN?
.
31
1.3.1
REFACTORING
IN
EINEM
LEGACY-SYSTEM
.
33
1.3.2
WANN
SOLLTE
ICH
NICHT
REFACTORN?
.
33
1.4
WERKZEUGE:
WIE
SOLLTE
ICH
(SICHER)
REFACTORN?
.
33
1.5
WERKZEUGE
FUER
DEN
ANFANG
.
34
1.5.1
PROGRAMMIERSPRACHE:
TYPESCRIPT
.
34
1.5.2
EDITOR:
VISUAL
STUDIO
CODE
.
35
1.5.3
VERSIONSKONTROLLE:
GIT
.
35
1.6
DAS
DURCHGEHENDE
BEISPIEL:
EIN
2D-RAETSELSPIEL
.
36
1.6.1
UEBUNG
MACHT
DEN
MEISTER:
EINE
ZWEITE
CODEBASIS
.
38
1.7
EIN
WORT
ZU
SOFTWARE
AUS
DER
ECHTEN
WELT
.
38
1.8
ZUSAMMENFASSUNG.
39
2
EIN
BLICK
UNTER
DIE
HAUBE
41
2.1
LESBARKEIT
UND
WARTBARKEIT
VERBESSERN
.
41
2.1.1
CODE
VERBESSERN
.
41
2.1.2
CODE
WARTEN
.
OHNE
ZU
AENDERN,
WAS
ER
TUT
.
44
2.2
GESCHWINDIGKEIT,
FLEXIBILITAET
UND
STABILITAET
GEWINNEN
.
45
7
2.2.1
KOMPOSITION
STATT
VERERBUNG
.
45
2.2.2
CODE
AENDERN
DURCH
HINZUFUEGEN
STATT
UMSCHREIBEN
.
46
2.3
REFACTORING
UND
DIE
TAEGLICHE
ARBEIT
.
47
2.3.1
REFACTORING
ALS
LERNMETHODE
.
48
2.4
DIE
DOMAENE
EINER
SOFTWARE
DEFINIEREN
.
48
2.5
ZUSAMMENFASSUNG
.
49
TEIL
I
DAS
REFACTORING
EINES
COMPUTERSPIELS
ALS
LERNBEISPIEL
3
LANGE
FUNKTIONEN
ZERSCHLAGEN
53
3.1
UNSERE
ERSTE
REGEL:
WARUM
FUENF
ZEILEN?
.
54
3.1.1
REGEL:
FUENF
ZEILEN
.
54
3.2
EIN
REFACTORING,
UM
FUNKTIONEN
AUFZUBRECHEN
.
57
3.2.1
REFACTORING:
METHODE
EXTRAHIEREN
.
62
3.3
FUNKTIONEN
TEILEN,
UM
ABSTRAKTIONSEBENEN
ZU
TRENNEN
.
66
3.3.1
REGEL:
AUFRUFEN
ODER
UEBERGEBEN
.
67
3.3.2
DIE
REGEL
ANWENDEN
.
68
3.4
EIGENSCHAFTEN
EINES
GUTEN
FUNKTIONSNAMENS
.
69
3.5
FUNKTIONEN
AUFBRECHEN,
DIE
ZU
VIEL
TUN
.
72
3.5.1
REGEL:
IF
NUR
AM
ANFANG
.
72
3.5.2
DIE
REGEL
ANWENDEN
.
74
3.6
ZUSAMMENFASSUNG
.
76
4
TYPEN
RICHTIG
NUTZEN
77
4.1
REFACTORING
EINER
EINFACHEN
.
77
4.1.1
REGEL:
BENUTZE
NIEMALS
IF
MIT
ELSE
.
78
4.1.2
DIE
REGEL
ANWENDEN
.
80
4.1.3
REFACTORING:
TYPCODES
DURCH
KLASSEN
ERSETZEN
.
82
4.1.4
CODE
IN
KLASSEN
SCHIEBEN
.
86
4.1.5
REFACTORING:
CODE
IN
KLASSEN
SCHIEBEN
.
89
4.1.6
UEBERFLUESSIGE
METHODEN
INTEGRIEREN
.
95
4.1.7
REFACTORING:
METHODE
INTEGRIEREN
.
96
8
4.2
REFACTORING
EINER
GROSSEN
IF-ANWEISUNG
.
98
4.2.1
GENERALITAET
ENTFERNEN
.
103
4.2.2
REFACTORING:
METHODE
SPEZIALISIEREN
.
105
4.2.3
DAS
EINZIGE
ERLAUBTE
SWITCH
.
108
4.2.4
REGEL:
BENUTZE
NIEMALS
SWITCH
.
109
4.2.5
DAS
IF
LOESCHEN
.
111
4.3
MIT
DOPPELTEM
CODE
UMGEHEN
.
114
4.3.1
HAETTEN
WIR
NICHT
STATT
DES
INTERFACES
EINE
ABSTRAKTE
KLASSE
BENUTZEN
KOENNEN?
.
116
4.3.2
REGEL:
ERBE
NUR
VON
INTERFACES
.
116
4.3.3
WAS
SOLL
DIESER
GANZE
DOPPELTE
CODE?
.
118
4.4
REFACTORING
VON
ZWEI
KOMPLEXEN
IF-ANWEISUNGEN
.
118
4.5
TOTEN
CODE
ENTFERNEN
.
122
4.5.1
REFACTORING:
VERSUCHSWEISE
LOESCHEN
UND
KOMPILIEREN
.
123
4.6
ZUSAMMENFASSUNG
.
124
5
AEHNLICHEN
CODE
ZUSAMMENFUEHREN
127
5.1
AEHNLICHE
KLASSEN
ZUSAMMENFUEHREN
.
128
5.1.1
REFACTORING:
AEHNLICHE
KLASSEN
ZUSAMMENFUEHREN
.
138
5.2
EINFACHE
BEDINGUNGEN
ZUSAMMENFUEHREN
.
145
5.2.1
REFACTORING:
IF S
ZUSAMMENFUEHREN
.
148
5.3
KOMPLEXE
BEDINGUNGEN
ZUSAMMENFUEHREN
.
150
5.3.1
RECHENREGELN
FUER
BEDINGUNGEN
.
151
5.3.2
REGEL:
BENUTZE
REINE
BEDINGUNGEN
.
152
5.3.3
GRUNDRECHENARTEN
FUER
BEDINGUNGEN
ANWENDEN
.
155
5.4
CODE
IN
VERSCHIEDENEN
KLASSEN
ZUSAMMENFUEHREN
.
156
5.4.1
UML-KLASSENDIAGRAMME
ZEIGEN
BEZIEHUNGEN
ZWISCHEN
KLASSEN
.
163
5.4.2
REFACTORING:
STRATEGIE
EINFUEHREN
.
165
5.4.3
REGEL:
KEINE
INTERFACES
MIT
NUR
EINER
IMPLEMENTIERUNG
.
174
5.4.4
REFACTORING:
INTERFACE
AUS
IMPLEMENTIERUNG
EXTRAHIEREN
.
175
5.5
AEHNLICHE
FUNKTIONEN
ZUSAMMENFUEHREN
.
178
5.6
AEHNLICHEN
CODE
ZUSAMMENFUEHREN
.
182
5.7
ZUSAMMENFASSUNG
.
187
9
6
DIE
DATEN
VERTEIDIGEN
189
6.1
KAPSELUNG
OHNE
GETTER
.
189
6.1.1
REGEL:
BENUTZE
KEINE
GETTER
UND
SETTER
.
189
6.1.2
DIE
REGEL
ANWENDEN
.
192
6.1.3
REFACTORING:
GETTER
UND
SETTER
LOESCHEN
.
194
6.1.4
DEN
LETZTEN
GETTER
LOESCHEN
.
197
6.2
EINFACHE
DATEN
KAPSELN
.
201
6.2.1
REGEL:
VERMEIDE
GEMEINSAME
AFFIXE
.
201
6.2.2
DIE
REGEL
ANWENDEN
.
203
6.2.3
REFACTORING:
DATEN
KAPSELN
.
210
6.3
KOMPLEXE
DATEN
KAPSELN
.
214
6.4
INVARIANTE
REIHENFOLGEN
ENTFERNEN
.
222
6.4.1
REFACTORING:
REIHENFOLGE
ERZWINGEN
.
223
6.5
EIN
ANDERES
VORGEHEN,
UM
ENUMS
ZU
LOESCHEN
.
226
6.5.1
ENUMERATIONEN
DURCH
PRIVATE
KONSTRUKTOREN
.
226
6.5.2
ZAHLEN
AUF
KLASSEN
ABBILDEN
.
229
6.6
ZUSAMMENFASSUNG
.
232
TEIL
II
DAS
GELERNTE
IN
DIE
PRAXIS
UEBERTRAGEN
7
MIT
DEM
COMPILER
ZUSAMMENARBEITEN
235
7.1
DEN
COMPILER
KENNENLERNEN
.
236
7.1.1
SCHWAECHE:
DAS
HALTEPROBLEM
BEGRENZT
UNSER
WISSEN
ZUR
KOMPILIERZEIT
.
236
7.1.2
STAERKE:
ERREICHBARKEIT
GARANTIERT,
DASS
EINE
METHODE
RETURN
ERREICHT
.
237
7.1.3
STAERKE:
DEFINITIVE
ZUWEISUNG
VERHINDERT
ZUGRIFF
AUF
UNINITIALISIERTE
VARIABLEN
.
238
7.1.4
STAERKE:
ZUGRIFFSKONTROLLE
HILFT
BEIM
KAPSELN
VON
DATEN
.
239
7.1.5
STAERKE:
TYPPRUEFUNG
BEWEIST
EIGENSCHAFTEN
.
239
7.1.6
SCHWAECHE:
NULL
ZU
DEREFERENZIEREN
VERURSACHT
ABSTUERZE
.
241
7.1.7
SCHWAECHE:
ARITHMETISCHE
FEHLER
VERURSACHEN
UEBERLAEUFE
UND
ABSTUERZE
.
241
7.1.8
SCHWAECHE:
ZUGRIFF
AUSSERHALB
DER
ARRAY-GRENZEN
VERURSACHT
ABSTUERZE
.
242
7.1.9
SCHWAECHE:
ENDLOSSCHLEIFEN
LASSEN
UNSERE
ANWENDUNG
STILLSTEHEN
.
242
7.1.10
SCHWAECHE:
DEADLOCKS
UND
WETTLAUFSITUATIONEN
VERURSACHEN
UNBEABSICHTIGTES
VERHALTEN
.
243
10
7.2
DEN
COMPILER
BENUTZEN
.
245
7.2.1
DEN
COMPILER
ZUM
ARBEITEN
BRINGEN
.
246
7.2.2
KAEMPFE
NICHT
GEGEN
DEN
COMPILER
.
249
7.3
VERTRAUE
DEM
COMPILER
.
255
7.3.1
LEHRE
DEN
COMPILER
INVARIANTEN
.
255
7.3.2
BEACHTE
SEINE
WARNUNGEN
.
257
7.4 VERTRAUE
NUR
DEM
COMPILER
.
258
7.5
ZUSAMMENFASSUNG
.
259
8
FINGER
WEG
VON
KOMMENTAREN
261
8.1
VERALTETE
KOMMENTARE
LOESCHEN
.
263
8.2
AUSKOMMENTIERTEN
CODE
LOESCHEN
.
263
8.3
UEBERFLUESSIGE
KOMMENTARE
LOESCHEN
.
264
8.4
KOMMENTARE
IN
METHODENNAMEN
UMSETZEN
.
265
8.4.1
KOMMENTARE
ZUR
PLANUNG
NUTZEN
.
265
8.5
KOMMENTARE
BEHALTEN,
DIE
INVARIANTEN
DOKUMENTIEREN
.
266
8.5.1
PROZESSINVARIANTEN
.
266
8.6
ZUSAMMENFASSUNG
.
267
9
LERNE,
DAS
LOESCHEN
ZU
LIEBEN
269
9.1
CODE
LOESCHEN:
DAS
NAECHSTE
ABENTEUER
.
270
9.2
CODE
LOESCHEN,
UM
ANFALLENDE
KOMPLEXITAETZU
REDUZIEREN
.
271
9.2.1
TECHNISCHES
UNWISSEN
AUS
MANGELNDER
ERFAHRUNG
.
271
9.2.2
TECHNISCHER
ABRAUM
AUS
ZEITDRUCK
.
272
9.2.3
TECHNISCHE
SCHULD
AUS
SACHZWAENGEN
.
273
9.2.4
TECHNISCHE
REIBUNG
AUS
WACHSTUM
.
273
9.3
CODE
NACH
VERTRAUTHEIT
KATEGORISIEREN
.
274
9.4
CODE
IN
EINEM
LEGACY-SYSTEM
LOESCHEN
.
275
9.4.1
CODE
VERSTEHEN
NACH
ART
DER
WUERGEFEIGE
.
275
9.4.2
DEN
CODE
MIT
DEM
WUERGEFEIGENVERFAHREN
VERBESSERN
.
278
11
9.5
CODE
AUS
EINEM
EINGEFRORENEN
PROJEKT
LOESCHEN
.
278
9.5.1
DAS
GEWUENSCHTE
ERGEBNIS
ZUM
DEFAULT
MACHEN
.
279
9.5.2
ABRAUM
REDUZIEREN
DURCH
PROTOTYPEN
.
279
9.6
BRANCHES
AUS
DER
VERSIONSKONTROLLE
LOESCHEN
.
280
9.6.1
ABRAUM
REDUZIEREN
DURCH
BRANCH
LIMITS
.
281
9.7
CODEDOKUMENTATION
LOESCHEN
.
282
9.7.1
ALGORITHMUS,
UM
HERAUSZUFINDEN,
WIE
WIR
WISSEN
FESTHALTEN
.
283
9.8
TESTCODE
LOESCHEN
.
284
9.8.1
OPTIMISTISCHE
TESTS
LOESCHEN
.
284
9.8.2
PESSIMISTISCHE
TESTS
LOESCHEN
.
284
9.8.3
INSTABILE
TESTS
REPARIEREN
ODER
LOESCHEN
.
284
9.8.4
REFACTORINGS
DURCHFUEHREN,
UM
KOMPLEXE
TESTFAELLE
LOSZUWERDEN
.
285
9.8.5
TESTS
SPEZIALISIEREN,
UM
SIE
ZU
BESCHLEUNIGEN
.
285
9.9
KONFIGURATIONSCODE
LOESCHEN.
286
9.9.1
KONFIGURATION
ZEITLICH
KATEGORISIEREN
.
286
9.10
CODE
LOESCHEN,
UM
BIBLIOTHEKEN
LOSZUWERDEN
.
288
9.10.1
DEN
EINSATZ
VON
BIBLIOTHEKEN
EINSCHRAENKEN
.
290
9.11
CODE
AUS
FUNKTIONIERENDEN
FEATURES
ENTFERNEN
.
291
9.12
ZUSAMMENFASSUNG
.
292
10
KEINE
ANGST
VOR
NEUEM
CODE
293
10.1
UNSICHERHEIT
AKZEPTIEREN:
IN
DIE
GEFAHR
EINTRETEN
.
294
10.2
PROTOTYPEN:
GEGEN
DIE
ANGST,
DAS
FALSCHE
ZU
ENTWICKELN
.
294
10.3
VERHAELTNISMAESSIGE
ARBEIT:
GEGEN
DIE
ANGST
VOR
VERSCHWENDUNG
UND
RISIKO
.
296
10.4
SCHRITTWEISE
VERBESSERUNG:
GEGEN
DIE
ANGST
VOR
IMPERFEKTION
.
297
10.5
WIE
COPY
&
PASTE
UNSERE
GESCHWINDIGKEIT
BEEINFLUSST
.
298
10.6
VERAENDERN
DURCH
HINZUFUEGEN:
GEPLANTE
ERWEITERBARKEIT
.
299
10.7
VERAENDERN
DURCH
HINZUFUEGEN
ERLAUBT
ABWAERTSKOMPATIBILITAET
.
300
10.8
VERAENDERN
DURCH
HINZUFUEGEN
MIT
FEATURESCHALTERN
.
302
10.9
VERAENDERN
DURCH
HINZUFUEGEN
MIT
VERZWEIGUNG
DURCH
ABSTRAKTION
.
306
10.10
ZUSAMMENFASSUNG
.
309
12
11
FOLGE
DER
STRUKTUR
IM
CODE
311
11.1
STRUKTUREN
EINTEILEN
NACH
WIRKUNGSBEREICH
UND
HERKUNFT
.
311
11.2
DREI
ARTEN,
WIE
CODE
VERHALTEN
SPIEGELT
.
313
11.2.1
VERHALTEN
IM
KONTROLLFLUSS
AUSDRUECKEN
.
313
11.2.2
VERHALTEN
IN
DER
STRUKTUR
DER
DATEN
AUSDRUECKEN
.
315
11.2.3
VERHALTEN
IN
DEN
DATEN
AUSDRUECKEN
.
319
11.3
CODE
HINZUFUEGEN,
UM
STRUKTUR
ZU
BETONEN
.
321
11.4
BEOBACHTEN
STATT
VORHERSAGEN
-
EMPIRISCHE
TECHNIKEN
EINSETZEN
.
322
11.5
SICHERHEIT
GEWINNEN,
OHNE
DEN
CODE
ZU
VERSTEHEN
.
323
11.5.1
SICHERHEIT
DURCH
TESTS
.
323
11.5.2
SICHERHEIT
DURCH
HANDWERKSKUNST
.
323
11.5.3
SICHERHEIT
DURCH
WERKZEUGE
.
323
11.5.4
SICHERHEIT
DURCH
FORMALE
VERIFIKATION
.
324
11.5.5
SICHERHEIT
DURCH
FEHLERTOLERANZ
.
324
11.6
UNGENUTZTE
STRUKTUREN
FINDEN
.
324
11.6.1
LEERZEILEN
NUTZEN:
EXTRAHIEREN
UND
KAPSELN
.
325
11.6.2
DOPPELTEN
CODE
ZUSAMMENFUEHREN
.
326
11.6.3
GEMEINSAME
AFFIXE
NUTZEN-DURCH
KAPSELUNG
.
330
11.6.4
DEN
LAUFZEITTYP
BEARBEITEN
-
MIT
DYNAMISCHEM
DISPATCH
.
332
11.7
ZUSAMMENFASSUNG
.
333
12
VERMEIDE
OPTIMIERUNG
UND
GENERALITAET
335
12.1
NACH
EINFACHHEIT
STREBEN
.
336
12.2
VERALLGEMEINERN
-
WANN
UND
WIE
.
338
12.2.1
MINIMALE
LOESUNGEN
BAUEN,
UM
GENERALITAET
ZU
VERMEIDEN
.
338
12.2.2
DINGE
AEHNLICHER
STABILITAET
ZUSAMMENFUEHREN
.
339
12.2.3
UNNOETIGE
GENERALITAET
AUSMERZEN
.
339
12.3
OPTIMIEREN
-
WANN
UND
WIE
.
340
12.3.1
REFACTORING
VOR
OPTIMIERUNG
.
341
12.3.2
OPTIMIERE
NACH
DER
ENGPASSTHEORIE
.
343
12.3.3
OPTIMIERE
VON
METRIKEN
GEFUEHRT
.
346
12.3.4
DIE
RICHTIGEN
ALGORITHMEN
UND
DATENSTRUKTUREN
WAEHLEN
.
346
12.3.5
CACHES
BENUTZEN
.
348
12.3.6
OPTIMIERTEN
CODE
ISOLIEREN
.
350
12.4
ZUSAMMENFASSUNG
.
352
13
13
SCHLECHTER
CODE
SOLL
SCHLECHT
AUSSEHEN
353
13.1
AUF
PROZESSPROBLEME
MIT
SCHLECHTEM
CODE
AUFMERKSAM
MACHEN
.
353
13.2
TRENNUNG
IN
SAUBEREN
UND
PROBLEMATISCHEN
CODE
.
355
13.2.1
DIE
THEORIE
DER ZERBROCHENEN
FENSTER
.
356
13.3
ANSAETZE,
SCHLECHTEN
CODE
ZU
DEFINIEREN
.
356
13.3.1
DIE
REGELN
AUS
DIESEM
BUCH:
EINFACH
UND
KONKRET
.
356
13.3.2
CODE
SMELLS:
KOMPLETT
UND
ABSTRAKT
.
357
13.3.3
ZYKLOMATISCHE
KOMPLEXITAET:
ALGORITHMISCH
(OBJEKTIV)
.
357
13.3.4
KOGNITIVE
KOMPLEXITAET:
ALGORITHMISCH
(SUBJEKTIV)
.
358
13.4
REGELN
FUER
SICHEREN
VANDALISMUS
.
359
13.5
METHODEN
FUER
SICHEREN
VANDALISMUS
.
359
13.5.1
ENUMS
BENUTZEN
.
360
13.5.2
INT
UND
STRING
ALS
TYPCODES
BENUTZEN
.
361
13.5.3
MAGISCHE
ZAHLEN
IN
DEN
CODE
SCHREIBEN
.
362
13.5.4
KOMMENTARE
HINZUFUEGEN
.
362
13.5.5
LEERZEILEN
UND-ZEICHEN
EINFUEGEN
.
363
13.5.6
DINGE
NACH
NAMEN
GRUPPIEREN
.
364
13.5.7
NAMEN
UM
KONTEXT
ERWEITERN
.
365
13.5.8
LANGE
METHODEN
SCHAFFEN
.
366
13.5.9
METHODEN
VIELE
PARAMETER
GEBEN
.
367
13.5.10
GETTER
UND
SETTER
BENUTZEN
.
368
13.6
ZUSAMMENFASSUNG.
369
14
ZUM
ABSCHLUSS
371
14.1
EIN
RUECKBLICK
AUF
DIE
REISE
IN
DIESEM
BUCH
.
371
14.1.1
EINFUEHRUNG:
WAS
UND
WARUM?
.
371
14.1.2
TEIL
I:
KONKRETE
ANWENDUNGEN
.
372
14.1.3
TEIL
II:
DEN
HORIZONT
ERWEITERN
.
372
14.2
DIE
PHILOSOPHIE
DAHINTER
.
372
14.2.1
DIE
SUCHE
NACH
IMMER
KLEINEREN
SCHRITTEN
.
372
14.2.2
DIE
SUCHE
NACH
DER
ZUGRUNDE
LIEGENDEN
STRUKTUR
.
373
14.2.3
DIE
REGELN
ZUR
ZUSAMMENARBEIT
EINSETZEN
.
374
14.2.4
DAS
TEAM
UEBER
DIE
PERSON
STELLEN
.
374
14.2.5
EINFACHHEIT
UEBER
VOLLSTAENDIGKEIT
STELLEN
.
375
14.2.6
OBJEKTE
ODER
FUNKTIONEN
HOEHERER
ORDNUNG
BENUTZEN
.
376
14
14.3
WIE
MACHE
ICH
WEITER?
.
377
14.3.1
DIE
MIKROARCHITEKTUR-STRASSE
.
377
14.3.2
DER
MAKROARCHITEKTUR-WEG
.
377
14.3.3
DIE
SOFTWAREQUALITAETS-ROUTE
.
378
14.4
ZUSAMMENFASSUNG.
378
ANHANG
381
A
DIE
WERKZEUGE
FUER
TEIL
I
INSTALLIEREN
.
381
A.L
NODE.JS
.
381
A.2
TYPESCRIPT
.
381
A.3
VISUAL
STUDIO
CODE
.
381
A.4
GIT
.
382
A.5
DAS
TYPESCRIPT-PROJEKT
EINRICHTEN
.
382
A.6
DAS
TYPESCRIPT-PROJEKT
BAUEN
.
382
A.7
WIE
DU
DEN
LEVEL
AENDERST
.
383
INDEX
.
385
15 |
any_adam_object | 1 |
any_adam_object_boolean | 1 |
author | Clausen, Christian |
author_GND | (DE-588)1274389526 |
author_facet | Clausen, Christian |
author_role | aut |
author_sort | Clausen, Christian |
author_variant | c c cc |
building | Verbundindex |
bvnumber | BV048601306 |
classification_rvk | ST 230 ST 233 |
ctrlnum | (OCoLC)1355302805 (DE-599)DNB1260158284 |
discipline | Informatik |
discipline_str_mv | Informatik |
edition | 1. Auflage |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>00000nam a22000008c 4500</leader><controlfield tag="001">BV048601306</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20230209</controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">221208s2023 gw a||| |||| 00||| ger d</controlfield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">22,N25</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">1260158284</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783836292245</subfield><subfield code="c">Broschur : EUR 34.90 (DE), EUR 35.90 (AT), CHF 44.90 (freier Preis)</subfield><subfield code="9">978-3-8362-9224-5</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">3836292246</subfield><subfield code="9">3-8362-9224-6</subfield></datafield><datafield tag="024" ind1="3" ind2=" "><subfield code="a">9783836292245</subfield></datafield><datafield tag="028" ind1="5" ind2="2"><subfield code="a">Bestellnummer: 459/09224</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1355302805</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)DNB1260158284</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">ger</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">gw</subfield><subfield code="c">XA-DE-NW</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-92</subfield><subfield code="a">DE-20</subfield><subfield code="a">DE-860</subfield><subfield code="a">DE-1043</subfield><subfield code="a">DE-706</subfield><subfield code="a">DE-19</subfield><subfield code="a">DE-1102</subfield><subfield code="a">DE-859</subfield><subfield code="a">DE-573</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 230</subfield><subfield code="0">(DE-625)143617:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 233</subfield><subfield code="0">(DE-625)143620:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="8">1\p</subfield><subfield code="a">004</subfield><subfield code="2">23sdnb</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Clausen, Christian</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1274389526</subfield><subfield code="4">aut</subfield></datafield><datafield tag="240" ind1="1" ind2="0"><subfield code="a">Five lines of code</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Five lines of code</subfield><subfield code="b">Clean Code durch gezieltes Refactoring</subfield><subfield code="c">Christian Clausen</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">1. Auflage</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Bonn</subfield><subfield code="b">Rheinwerk</subfield><subfield code="c">2023</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">388 Seiten</subfield><subfield code="b">Illustrationen</subfield><subfield code="c">24 cm x 19 cm</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">Rheinwerk Computing</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Softwaretest</subfield><subfield code="0">(DE-588)4132652-0</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Fehlerbehandlung</subfield><subfield code="0">(DE-588)4153834-1</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Programmcode</subfield><subfield code="0">(DE-588)4734701-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Clean Code</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Refactoring</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Optimierung</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Code Smells</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">TypeScript</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Agile Development</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Agilität</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Styleguide</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">OOP-Sprachen</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Software-Entwicklung</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Programmierung</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Programmieren</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Programmiersprachen</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Bücher Lernen Kurse Grundlagen Seminare Tutorials Workshops Training</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Codebasen</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Programmcode</subfield><subfield code="0">(DE-588)4734701-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Softwaretest</subfield><subfield code="0">(DE-588)4132652-0</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="2"><subfield code="a">Fehlerbehandlung</subfield><subfield code="0">(DE-588)4153834-1</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="710" ind1="2" ind2=" "><subfield code="a">Rheinwerk Verlag</subfield><subfield code="0">(DE-588)1081738405</subfield><subfield code="4">pbl</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">X:MVB</subfield><subfield code="q">text/html</subfield><subfield code="u">http://deposit.dnb.de/cgi-bin/dokserv?id=d7db32b62881487a851389e6fd978e2f&prov=M&dok_var=1&dok_ext=htm</subfield><subfield code="3">Inhaltstext</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">B:DE-101</subfield><subfield code="q">application/pdf</subfield><subfield code="u">https://d-nb.info/1260158284/04</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">DNB Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033976831&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="883" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="a">vlb</subfield><subfield code="d">20220618</subfield><subfield code="q">DE-101</subfield><subfield code="u">https://d-nb.info/provenance/plan#vlb</subfield></datafield></record></collection> |
id | DE-604.BV048601306 |
illustrated | Illustrated |
index_date | 2024-07-03T21:10:09Z |
indexdate | 2024-07-20T05:48:56Z |
institution | BVB |
institution_GND | (DE-588)1081738405 |
isbn | 9783836292245 3836292246 |
language | German |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-033976831 |
oclc_num | 1355302805 |
open_access_boolean | |
owner | DE-92 DE-20 DE-860 DE-1043 DE-706 DE-19 DE-BY-UBM DE-1102 DE-859 DE-573 |
owner_facet | DE-92 DE-20 DE-860 DE-1043 DE-706 DE-19 DE-BY-UBM DE-1102 DE-859 DE-573 |
physical | 388 Seiten Illustrationen 24 cm x 19 cm |
publishDate | 2023 |
publishDateSearch | 2023 |
publishDateSort | 2023 |
publisher | Rheinwerk |
record_format | marc |
series2 | Rheinwerk Computing |
spelling | Clausen, Christian Verfasser (DE-588)1274389526 aut Five lines of code Five lines of code Clean Code durch gezieltes Refactoring Christian Clausen 1. Auflage Bonn Rheinwerk 2023 388 Seiten Illustrationen 24 cm x 19 cm txt rdacontent n rdamedia nc rdacarrier Rheinwerk Computing Softwaretest (DE-588)4132652-0 gnd rswk-swf Fehlerbehandlung (DE-588)4153834-1 gnd rswk-swf Programmcode (DE-588)4734701-6 gnd rswk-swf Clean Code Refactoring Optimierung Code Smells TypeScript Agile Development Agilität Styleguide OOP-Sprachen Software-Entwicklung Programmierung Programmieren Programmiersprachen Bücher Lernen Kurse Grundlagen Seminare Tutorials Workshops Training Codebasen Programmcode (DE-588)4734701-6 s Softwaretest (DE-588)4132652-0 s Fehlerbehandlung (DE-588)4153834-1 s DE-604 Rheinwerk Verlag (DE-588)1081738405 pbl X:MVB text/html http://deposit.dnb.de/cgi-bin/dokserv?id=d7db32b62881487a851389e6fd978e2f&prov=M&dok_var=1&dok_ext=htm Inhaltstext B:DE-101 application/pdf https://d-nb.info/1260158284/04 Inhaltsverzeichnis DNB Datenaustausch application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033976831&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis 1\p vlb 20220618 DE-101 https://d-nb.info/provenance/plan#vlb |
spellingShingle | Clausen, Christian Five lines of code Clean Code durch gezieltes Refactoring Softwaretest (DE-588)4132652-0 gnd Fehlerbehandlung (DE-588)4153834-1 gnd Programmcode (DE-588)4734701-6 gnd |
subject_GND | (DE-588)4132652-0 (DE-588)4153834-1 (DE-588)4734701-6 |
title | Five lines of code Clean Code durch gezieltes Refactoring |
title_alt | Five lines of code |
title_auth | Five lines of code Clean Code durch gezieltes Refactoring |
title_exact_search | Five lines of code Clean Code durch gezieltes Refactoring |
title_exact_search_txtP | Five lines of code Clean Code durch gezieltes Refactoring |
title_full | Five lines of code Clean Code durch gezieltes Refactoring Christian Clausen |
title_fullStr | Five lines of code Clean Code durch gezieltes Refactoring Christian Clausen |
title_full_unstemmed | Five lines of code Clean Code durch gezieltes Refactoring Christian Clausen |
title_short | Five lines of code |
title_sort | five lines of code clean code durch gezieltes refactoring |
title_sub | Clean Code durch gezieltes Refactoring |
topic | Softwaretest (DE-588)4132652-0 gnd Fehlerbehandlung (DE-588)4153834-1 gnd Programmcode (DE-588)4734701-6 gnd |
topic_facet | Softwaretest Fehlerbehandlung Programmcode |
url | http://deposit.dnb.de/cgi-bin/dokserv?id=d7db32b62881487a851389e6fd978e2f&prov=M&dok_var=1&dok_ext=htm https://d-nb.info/1260158284/04 http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=033976831&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT clausenchristian fivelinesofcode AT rheinwerkverlag fivelinesofcode AT clausenchristian fivelinesofcodecleancodedurchgezieltesrefactoring AT rheinwerkverlag fivelinesofcodecleancodedurchgezieltesrefactoring |