Wozu brauche ich Clean Code, was kostet Clean Code, was ist Clean Code und wenn ich's haben will, wie führe ich Clean Code ein?
Slides des Tech Talk vom 13.01.2014 bei Leanovate von Lorenz Hahn
44. Was
ist
Clean
Code?
25
Evolvierbarkeit,
Wandelbarkeit,
Korrektheit,
ProdukGonseffizienz
und
konGnuierliche
Verbesserung
sichern.
Dienstag, 14. Januar 14
45. Was
ist
Clean
Code?
26
Handwerk
Dienstag, 14. Januar 14
46. Was
ist
Clean
Code?
27
Mindset
Dienstag, 14. Januar 14
47. Was
ist
Clean
Code?
28
AutomaGsierung
Dienstag, 14. Januar 14
54. Clean
Code
Prinzipien
-‐
SOLID
35
“There should never be
more than one reason for
a class to change.”
Single
Responsible
Principle
(SRP)
Dienstag, 14. Januar 14
55. Clean
Code
Prinzipien
-‐
SOLID
36
Open
Closed
Principle
(OCP)
Dienstag, 14. Januar 14
56. Clean
Code
Prinzipien
-‐
SOLID
36
Offen
für
Erweiterung
Open
Closed
Principle
(OCP)
Dienstag, 14. Januar 14
57. Clean
Code
Prinzipien
-‐
SOLID
Geschlossen
für
Veränderung
36
Offen
für
Erweiterung
Open
Closed
Principle
(OCP)
Dienstag, 14. Januar 14
58. Clean
Code
Prinzipien
-‐
SOLID
37
Class Rectangle
Class Square
Liskov
SubsGtuGon
Principle
(LSP)
Dienstag, 14. Januar 14
59. Clean
Code
Prinzipien
-‐
SOLID
37
Class Rectangle
Class Square
Liskov
SubsGtuGon
Principle
(LSP)
Dienstag, 14. Januar 14
60. Clean
Code
Prinzipien
-‐
SOLID
37
Class Rectangle
Class Square
Liskov
SubsGtuGon
Principle
(LSP)
Dienstag, 14. Januar 14
74. Clean
Code
-‐
Prak=ken
-‐
Style
z.B.
Kurze
Klassen
&
Methoden
Dienstag, 14. Januar 14
45
75. Clean
Code
-‐
Prak=ken
-‐
Style
z.B.
Kurze
Klassen
&
Methoden
z.B.
eindeuGge
und
sprechende
Namen
Dienstag, 14. Januar 14
45
76. Clean
Code
-‐
Prak=ken
-‐
Style
z.B.
Kurze
Klassen
&
Methoden
z.B.
eindeuGge
und
sprechende
Namen
z.B.
einheitliche
FormaGerung
Dienstag, 14. Januar 14
45
77. Clean
Code
-‐
Prak=ken
-‐
Style
45
z.B.
Kurze
Klassen
&
Methoden
z.B.
eindeuGge
und
sprechende
Namen
z.B.
einheitliche
FormaGerung
z.B.
vermeiden
von
Seiteneffekten
in
FunkGonen
Dienstag, 14. Januar 14
78. Clean
Code
-‐
Prak=ken
-‐
Style
45
z.B.
Kurze
Klassen
&
Methoden
z.B.
eindeuGge
und
sprechende
Namen
z.B.
einheitliche
FormaGerung
z.B.
vermeiden
von
Seiteneffekten
in
FunkGonen
z.B.
Anzahl
der
Argumente
in
FunkGonen
Dienstag, 14. Januar 14
79. Clean
Code
-‐
Prak=ken
-‐
Style
45
z.B.
Kurze
Klassen
&
Methoden
z.B.
eindeuGge
und
sprechende
Namen
z.B.
einheitliche
FormaGerung
z.B.
vermeiden
von
Seiteneffekten
in
FunkGonen
z.B.
Anzahl
der
Argumente
in
FunkGonen
.....
und
viele,
viele
mehr.
Dienstag, 14. Januar 14
80. Clean
Code
-‐
Prak=ken
-‐
Style
45
z.B.
Kurze
Klassen
&
Methoden
z.B.
eindeuGge
und
sprechende
Namen
z.B.
einheitliche
FormaGerung
z.B.
vermeiden
von
Seiteneffekten
in
FunkGonen
z.B.
Anzahl
der
Argumente
in
FunkGonen
.....
und
viele,
viele
mehr.
Sorry.
Dienstag, 14. Januar 14
81. Clean
Code
-‐
Prak=ken
-‐
Style
46
Namen
sind
mehr
als
Schall
und
Rauch
*
nutze
Namen,
um
deine
Absicht
zu
benennen
*
nutze
eindeuGge
Namen
*
nutze
Rollen
im
Namen,
wenn
Design-‐Panerns
involviert
sind.
(addressObserver)
*
meide
Namen,
die
den
Leser
auf
eine
falsche
Fährte
führen
*
meide
sehr
ähnliche
Namen
*
meide
Rauschen
in
Namen
(Info,Data,Object,the,a,..)
*
nutze
aussprechbare
Namen
*
nutze
Namen,
nach
denen
sich
suchen
lässt
*
meide
Typ-‐
oder
Sichtbarkeits-‐Codierung
(miDaysLe>)
Dienstag, 14. Januar 14
82. Clean
Code
-‐
Prak=ken
-‐
Style
47
Namen
sind
mehr
als
Schall
und
Rauch
*
nutze
SubstanGve
für
Klassen
*
nutze
Verben
für
Methoden
*
meide
Slang
oder
Witzige
Namen
*
wähle
einen
Namen
für
ein
Konzept
und
bleibe
dabei
(lade,
lese,
hole,
was
wird
hier
verwendet?)
*
vergebe
genau
einen
Namen
für
eine
Idee
**
meide
das
Erschaffen
von
Teekesselchen
(Homonyme)
**
meide
das
vergeben
mehrer
Namen
für
die
selbe
Idee
*
nutze
Namen
aus
der
Problem-‐Domäne,
wenn
es
keinen
technischen
Begriff
gibt
(s.o.
Panern-‐Rollen)
Dienstag, 14. Januar 14
83. Clean
Code
-‐
Prak=ken
Version
Control
System
Dienstag, 14. Januar 14
48
84. Clean
Code
-‐
Prak=ken
Version
Control
System
Issue
Tracking
Features
und
Bugs
Dienstag, 14. Januar 14
48
85. Clean
Code
-‐
Prak=ken
Version
Control
System
Issue
Tracking
Features
und
Bugs
ConGnuous
IntegraGon
Voll
automaGsierter
Build,
Deploy
und
Test-‐Zyklus
Erfassung
von
Kennzahlen
(KPI‘s)
Visualisierung
von
Ergebnissen
Dienstag, 14. Januar 14
48
95. Clean
Code
einführen
Messwerte
erfassen
-‐
KPI‘s
Soft ware z.B.
Sonar
Emma
Findbugs
Checkstyle
Dienstag, 14. Januar 14
56
96. Clean
Code
einführen
Messwerte
erfassen
-‐
KPI‘s
Soft ware z.B.
Sonar
Emma
Findbugs
Checkstyle
Dienstag, 14. Januar 14
56
Tests
sind
grün
97. Clean
Code
einführen
Messwerte
erfassen
-‐
KPI‘s
56
Tests
sind
grün
offene
Tickets
Soft ware z.B.
Sonar
Emma
Findbugs
Checkstyle
Dienstag, 14. Januar 14
98. Clean
Code
einführen
Messwerte
erfassen
-‐
KPI‘s
56
Tests
sind
grün
offene
Tickets
Testabdeckung
Soft ware z.B.
Sonar
Emma
Findbugs
Checkstyle
Dienstag, 14. Januar 14
99. Clean
Code
einführen
Messwerte
erfassen
-‐
KPI‘s
56
Tests
sind
grün
offene
Tickets
Testabdeckung
Soft ware z.B.
Sonar
Emma
Findbugs
Checkstyle
Dienstag, 14. Januar 14
Code-‐Format
100. Clean
Code
einführen
Messwerte
erfassen
-‐
KPI‘s
56
Tests
sind
grün
offene
Tickets
Testabdeckung
Soft ware z.B.
Sonar
Emma
Findbugs
Checkstyle
Dienstag, 14. Januar 14
Code-‐Format
VerdächGger
Code
101. Clean
Code
einführen
Messwerte
erfassen
-‐
KPI‘s
56
Tests
sind
grün
offene
Tickets
Testabdeckung
Soft ware z.B.
Sonar
Emma
Findbugs
Checkstyle
Code-‐Format
VerdächGger
Code
CyclomaGc
Complexity
Dienstag, 14. Januar 14
102. Clean
Code
einführen
Messwerte
erfassen
-‐
KPI‘s
56
Tests
sind
grün
offene
Tickets
Testabdeckung
Soft ware z.B.
Sonar
Emma
Findbugs
Checkstyle
Code-‐Format
VerdächGger
Code
CyclomaGc
Complexity
Technical
Debt
Dienstag, 14. Januar 14