effektiver Einsatz von Code-Reviews

03.06.2015
- Schneller, Billiger, Besser -
Effektiver Einsatz von
Code-Reviews
Dev Day in Dresden
27. Mai 2015
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
Version: 1.3
www.oio.de
[email protected]
Ihr Sprecher
Thorsten Maier
Trainer, Berater, Entwickler
Schwerpunkte
Menschen
Prozesse
Architektur
Code-Qualität
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
2
1
03.06.2015
Agenda
Einsteiger
Code-Reviews? Noch nie gehört!
Skeptiker
Wir haben es ausprobiert. Es funktioniert nicht!
Profis
Wir setzen Code-Reviews bereits erfolgreich ein
und wollen noch besser werden.
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
3
Agenda
Einsteiger
Skeptiker
Warum
CodeReviews
?
Do it!
Die richtigen
Tools
Profis
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
4
2
03.06.2015
Kennen Sie das?
„Das ist historisch gewachsen.“
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
5
Oder das?
„Das wollten wir schon lange
refactoren.“
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
6
3
03.06.2015
…noch ein Klassiker
„Thomas ist leider gerade
im Urlaub“
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
7
Es bleibt nie Zeit für das große
Refactoring
Code-Reviews
als kontinuierliche Lösung
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
8
4
03.06.2015
Bugs finden
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
9
Wissen
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
10
5
03.06.2015
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
11
Zeugnis
_______
_______
______
_____
_______
1+
Anerkennung
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
12
6
03.06.2015
Qualität kostet Geld…
120
Entwicklungskosten in %
15
100
80
60
100
105
ohne Code-Review
mit Code-Review
Code-Review
Entwicklung
40
20
0
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
13
Langfristige Kostenentwicklung
Wissen
ohne Code-Review
© 2015 Orientation in Objects GmbH
Bugfixing
Code-Review
Entwicklung
mit Code-Review
Effektiver Einsatz von Code-Reviews
14
7
03.06.2015
Qualität kostet Anstrengung…
Warum testen?
Vertrauen Sie Ihrem
eigenen Code nicht?
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
15
Code-Reviews für alle?
Projekt oder Produkt
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
16
8
03.06.2015
Agenda
Einsteiger
Skeptiker
Warum
CodeReviews
?
Do it!
Die richtigen
Tools
Profis
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
17
Formale Inspektion nach Michael Fagan (1976)
Planung
Manager
Überblick
Vorbereitung
Moderator
© 2015 Orientation in Objects GmbH
Inspektion
Autor
Nacharbeit
Prüfer
Effektiver Einsatz von Code-Reviews
Nachverfolgung
Schriftführer
18
9
03.06.2015
Formale Inspektion nach Michael Fagan (1976)
Planung
"Currently 1% of our
code is inspected“
Überblick
Vorbereitung
Inspektion
Nacharbeit
Nachverfolgung
"We believe by the end
of the year we can get it
up to 7%."
Manager
Moderator
Autor
Prüfer
Schriftführer
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
19
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
20
10
03.06.2015
Wann?
CodeReview
feature-x
CodeReview
feature-z
„Nach jedem Feature / Bugfix“
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
21
Wer?
Klickt
Prüft
Einstiegspunkte
Hinterfragt
Hinweise
Erläuterungen
Reviewer
Code-Autor
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
22
11
03.06.2015
Ein gemeinsames Ziel
„Wir wollen unsere Anwendung gemeinsam
besser machen“
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
23
Stelle Fragen
Was war der
Grund für dein
hier gewähltes
Vorgehen?
Das ist
falsch
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
24
12
03.06.2015
Nicht zu viel … und nicht zu lange
200 – 400 Zeilen
1 – 2 Stunden
Gefundene
Fehler
Dauer des Reviews
http://support.smartbear.com/resources/cc/book/code-review-cisco-case-study.pdf
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
25
Effektiver Einsatz von Code-Reviews
26
Do it!!!
© 2015 Orientation in Objects GmbH
13
03.06.2015
Qualität kostet Geld… und deshalb messen!
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
27
Checkliste
Sinnvolle Namen?
Klare Struktur?
Korrekte Verwendung von Datentypen?
Kommentare?
Code smells?
Tests vorhanden?
Wohldefinierte Schnittstellen?
Exception-Handling?
I18N?
Typische Programmier-Fehler?
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
28
14
03.06.2015
Guidelines
•
Sun Java Code Conventions
•
Clean Code
•
Tool-Standard-Konfiguration
–
–
–
–
Eclipse: Errors, Warnings und Formatter
Findbugs
PMD
Checkstyle
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
29
Agenda
Einsteiger
Skeptiker
Warum
CodeReviews
?
Do it!
Die richtigen
Tools
Profis
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
30
15
03.06.2015
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
31
Effektiver Einsatz von Code-Reviews
32
Versionsverwaltung & Diff-Tool
© 2015 Orientation in Objects GmbH
16
03.06.2015
Gute Vorbereitung ist die halbe Miete
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
33
Effektiver Einsatz von Code-Reviews
34
Alles in Ordnung?
© 2015 Orientation in Objects GmbH
17
03.06.2015
FindBugs
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
35
Effektiver Einsatz von Code-Reviews
36
Alles in Ordnung?
© 2015 Orientation in Objects GmbH
18
03.06.2015
Schichtenarchitektur?
Controller
ServiceImpl
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
37
Automatische Architektur-Tests
Controller
ServiceImpl
DaoImpl
https://github.com/thorstenmaier/architecture-layer-check/
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
38
19
03.06.2015
Wünsche an ein Code-Review-Tool
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
39
Atlassian Stash
Git
1. Änderung
2. Build
erfolgreich
Issue-Tracker
Jira
CI-Server
Bamboo
3b.
3a. Pull-Request
Autor
4a. Status-Übergang
© 2015 Orientation in Objects GmbH
Repo-Verwaltung
Stash
Effektiver Einsatz von Code-Reviews
4b. Pull
40
20
03.06.2015
Atlassian Stash
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
41
Fazit
Einsteiger
Wissen
Skeptiker
Be
prepared
Profis
KISS
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
42
21
03.06.2015
Mehr von OIO zum Thema…
• Schulung: Refactoring Workshop
• http://www.oio.de/seminar/methodik-prozess-management-soft-skills/training-javakurs-refactoring-schulung.htm
• Schulung: Git kompakt
• http://www.oio.de/git-kompakt-schulung-versionsverwaltung-seminar-dvcstraining.htm
• Schulung: Versionsverwaltung mit Git
• http://www.oio.de/workflows-schulung-git-seminar-dvcs-training.htm
• Schulung: Atlassian Stash – Enterprise Git
• http://www.oio.de/seminar/methodik-prozess-management-soft-skills/seminarstash-schulung-atlassian-enterprise-training-git-kurs.htm
• Schulung: JIRA – Fachliche Administration
• http://www.oio.de/seminar/methodik-prozess-management-soft-skills/seminartraining-atlassian-jira-schulung.htm
© 2015 Orientation in Objects GmbH
Effektiver Einsatz von Code-Reviews
43
? ?
?
?
?
? ?
?
Fragen ?
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
[email protected]
44
22
03.06.2015
Vielen Dank für ihre
Aufmerksamkeit !
Orientation in Objects GmbH
Weinheimer Str. 68
68309 Mannheim
www.oio.de
[email protected]
23