27
Die 7 Wege zum Clean Code

Die 7 Wege zum Clean Code

Embed Size (px)

DESCRIPTION

Diesen Vortrage habe ich auf den Clean Code Developer Days 2013 gehalten. In diesem Vortrag geht es um folgende Themen: statische Codeanalyse Testdriven Development Refactoring Continuous Integration Reviews Coding Standards Coding Dojos Viel Spaß beim Anschauen. http://www.www.claudioaltamura.de

Citation preview

Page 1: Die 7 Wege zum Clean Code

Die 7 Wege zum Clean Code

Page 2: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 2

Über mich

Claudio AltamuraSoftwareentwickler

Certified ScrumMaster

Interessen● Agile Softwareentwicklung

● Softwarearchitekturen

● Java

Page 3: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 3

Inhalt1. Statische Codeanalyse

2. Testdriven Development

3. Refactoring

4. Continuous Integration

5. Reviews

6. Coding Standards

7. Coding Dojos

Page 4: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 4

Statische CodeanalyseAutomatische Erkennung von Fehlern ● Sicherstellung von Coding-Standards

● Prüfung zum Softwaredesign

● Einhaltung diverser Metriken

● Namen, Größen, Anzahl

● weitere Verifikationen

Page 5: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 5

Statische CodeanalyseWelche Tools gibt es?

Checkstyle, Findbugs, PMD, etc.mvn checkstyle:checkstylemvn findbugs:findbugs

Was messen?● Anzahl Zeilen, Methoden und Klassen

● Duplicate Code

● Abhängigkeiten, Komplexität

● Anzahl von Tests, Anzahl fehlgeschlagener Tests

Page 6: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 6

Statische CodeanalyseSONARQUBE

Page 7: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 7

Testdriven DevelopmentVorteile● Senkt die Entwicklungskosten

● Produktivere Programmierer

● Einfache Validierung

● Positive Auswirkungen auf das Design

Vorgehen

Page 8: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 8

Testdriven DevelopmentBest Practices

● Zuerst die Tests schreiben

● "Keep it simple stupid" (KISS)

● "You aren't gonna need it" (YAGNI).

● Keep the unit small

● Der Testcode ist genau so wichtig

● Nicht auf Zustände vorhergelaufenen Tests bauen

Page 9: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 9

Testdriven DevelopmentVorsicht!● Nicht für alle Bereiche geeignet: z.B. Oberflächen

● Unterstützung durch Management wichtig

● Schlecht geschriebene Tests

● „Betriebsblindheit“ bei Unit Tests

Page 10: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 10

Refactoring

By continuously improving the design of code, we make it easier and easier to

work with. ... If you get into the hygienic habit of refactoring continuously, you'll

find that it is easier to extend and maintain code. —Joshua Kerievsky,

Refactoring to Patterns

Vorteile● Erhöhung der Lesbarkeit und Verständlichkeit

● Verbesserung der Wartbarkeit und Erweiterbarkeit

● Senkung von Kosten für Erweiterungen

Page 11: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 11

RefactoringMögliche Refactorings● Abstraktion

● Code in mehr logische Einheiten unterteilen

● Name und Ort von Code

Page 12: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 12

RefactoringRisiken● Risiko ungewünschter Änderungen und Fehler

● große Änderungen erschweren die Ursachenanalyse

● Unit-Tests senken lediglich die Risiken

Page 13: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 13

Continuous IntegrationPraktiken

● Automatisierte Übersetzung

● Kontinuierliche Test-Entwicklung

● Häufige Integration

● Kurze Testzyklen

● Gespiegelte Produktionsumgebung

● Einfacher Zugriff

● Automatisiertes Reporting

● Automatisierte Verteilung

Page 14: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 14

Continuous IntegrationVorteile● Integrations-Probleme werden laufend gefixt

● frühe Warnungen, Feedback-Zyklus

● Unit-Tests entdecken Fehler zeitnah

● ständige Verfügbarkeit eines lauffähigen Standes

Page 15: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 15

Continuous Integration

Page 16: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 16

ReviewsReviewarten● Informelles Review

● Walkthrough

● Inspektion

Lightweight Reviews● Over the Shoulder

● Pair Programming

Page 17: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 17

ReviewsVorteile● Kostengünstige Behebung von Fehlern

● Identifizierung von Verbesserungsmöglichkeiten

● Wissentransfer

Erfolgsfaktoren● Konstruktive Kritik üben

● Kultur von Lernen und Prozessverbesserung

● „Taktgefühl“ des Reviewers

Page 18: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 18

ReviewsGerrit

Page 19: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 19

Coding StandardsWhy Have Code Conventions?

Code conventions are important to programmers for a number of reasons:

● 80% of the lifetime cost of a piece of software goes to maintenance.

● Hardly any software is maintained for its whole life by the original author.

Code conventions improve the readability of the software, allowing engineers to

understand new code more quickly and thoroughly. — Code Conventions for the Java Language

Was sind Coding Standards?

Page 20: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected]

Coding StandardsBeispiele für Coding Standards● Naming Conventions, Anweisungen, White Space

● Deklarationen, Kommentare, Einrückung

● Dateiorganisation, Praktiken, Prinzipien und Regeln

Vorteile● Erleichterung der Arbeit

● Steigerung der Lesbarkeit, Verständlichkeit und Wartbarkeit

● Elimierung von vermeidbaren Fehlerquellen

Page 21: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 21

Coding StandardsProzess

● Basis Language Coding Conventions

● Festlegung in einem Dokument

● Schrittweise Justierung der Regeln, z.B.

● Tools für die statische Codeanalyse

● Codeformatter

Page 22: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 22

Coding Dojos● Dojo = Trainingsraum

● Kata = vorgegebener Bewegungsablauf

● Code Kata = vorgegebene Programmieraufgabe● viele Male hintereinander ausgeführt

● es geht nicht um die Lösung, sondern um den Weg

● Muster sollen in Fleisch und Blut übergehen

Ziel: besserer Entwickler zu werden

Page 23: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 23

Coding DojosAblauf● zwei Entwickler im Team an einem Rechner

● restliche Teilnehmer schauen auf den Beamer

● nach einer Zeitspanne Wechsel eines Entwickler

● bis nichts mehr zu verbessern ist

● am Ende Retrospektive

Page 24: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 24

Coding DojosFür was eignen sich Coding Katas?● TDD zu lernen

● Neue Sprache oder Sprachfeatures zu lernen

● besser zu programmieren

Page 25: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected]

Fragen & Antworten

Page 26: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected] 26

LinksStatische Codeanalyse

SonarSource (http://www.sonarqube.com)

Continuous Integration

Martin Fowler CI (http://www.martinfowler.com/articles/continuousIntegration.html)

TDD

Introduction to TDD (http://www.agiledata.org/essays/tdd.html)

Refactoring

Refactoring to Patterns Catalog (http://industriallogic.com/xp/refactoring/catalog.html)

Reviews

Best Kept Secrets (http://smartbear.com/SmartBear/media/pdfs/best-kept-secrets-of-peer-code-review.pdf)

Coding Standards

Code Conventions for the Java Programming Language (http://www.oracle.com/technetwork/java/codeconv-138413.html)

Coding Dojos

CodersDojo (http://codersdojo.org)

Page 27: Die 7 Wege zum Clean Code

Claudio Altamura, Entwickler & ScrumMaster

[email protected]

Vielen Dank für eure Aufmerksamkeit.

www.claudioaltamura.de