Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Die 7 Wege zum Clean Code
Claudio Altamura, Entwickler & ScrumMaster
Über mich
Claudio AltamuraSoftwareentwickler
Certified ScrumMaster
Interessen● Agile Softwareentwicklung
● Softwarearchitekturen
● Java
Claudio Altamura, Entwickler & ScrumMaster
Inhalt1. Statische Codeanalyse
2. Testdriven Development
3. Refactoring
4. Continuous Integration
5. Reviews
6. Coding Standards
7. Coding Dojos
Claudio Altamura, Entwickler & ScrumMaster
Statische CodeanalyseAutomatische Erkennung von Fehlern ● Sicherstellung von Coding-Standards
● Prüfung zum Softwaredesign
● Einhaltung diverser Metriken
● Namen, Größen, Anzahl
● weitere Verifikationen
Claudio Altamura, Entwickler & ScrumMaster
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
Claudio Altamura, Entwickler & ScrumMaster
Testdriven DevelopmentVorteile● Senkt die Entwicklungskosten
● Produktivere Programmierer
● Einfache Validierung
● Positive Auswirkungen auf das Design
Vorgehen
Claudio Altamura, Entwickler & ScrumMaster
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
Claudio Altamura, Entwickler & ScrumMaster
Testdriven DevelopmentVorsicht!● Nicht für alle Bereiche geeignet: z.B. Oberflächen
● Unterstützung durch Management wichtig
● Schlecht geschriebene Tests
● „Betriebsblindheit“ bei Unit Tests
Claudio Altamura, Entwickler & ScrumMaster
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
Claudio Altamura, Entwickler & ScrumMaster
RefactoringMögliche Refactorings● Abstraktion
● Code in mehr logische Einheiten unterteilen
● Name und Ort von Code
Claudio Altamura, Entwickler & ScrumMaster
RefactoringRisiken● Risiko ungewünschter Änderungen und Fehler
● große Änderungen erschweren die Ursachenanalyse
● Unit-Tests senken lediglich die Risiken
Claudio Altamura, Entwickler & ScrumMaster
Continuous IntegrationPraktiken
● Automatisierte Übersetzung
● Kontinuierliche Test-Entwicklung
● Häufige Integration
● Kurze Testzyklen
● Gespiegelte Produktionsumgebung
● Einfacher Zugriff
● Automatisiertes Reporting
● Automatisierte Verteilung
Claudio Altamura, Entwickler & ScrumMaster
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
Claudio Altamura, Entwickler & ScrumMaster
ReviewsReviewarten● Informelles Review
● Walkthrough
● Inspektion
Lightweight Reviews● Over the Shoulder
● Pair Programming
Claudio Altamura, Entwickler & ScrumMaster
ReviewsVorteile● Kostengünstige Behebung von Fehlern
● Identifizierung von Verbesserungsmöglichkeiten
● Wissentransfer
Erfolgsfaktoren● Konstruktive Kritik üben
● Kultur von Lernen und Prozessverbesserung
● „Taktgefühl“ des Reviewers
Claudio Altamura, Entwickler & ScrumMaster
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?
Claudio Altamura, Entwickler & ScrumMaster
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
Claudio Altamura, Entwickler & ScrumMaster
Coding StandardsProzess
● Basis Language Coding Conventions
● Festlegung in einem Dokument
● Schrittweise Justierung der Regeln, z.B.
● Tools für die statische Codeanalyse
● Codeformatter
Claudio Altamura, Entwickler & ScrumMaster
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
Claudio Altamura, Entwickler & ScrumMaster
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
Claudio Altamura, Entwickler & ScrumMaster
Coding DojosFür was eignen sich Coding Katas?● TDD zu lernen
● Neue Sprache oder Sprachfeatures zu lernen
● besser zu programmieren
Claudio Altamura, Entwickler & ScrumMaster
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)
Claudio Altamura, Entwickler & ScrumMaster
Vielen Dank für eure Aufmerksamkeit.
www.claudioaltamura.de