Clean Code
Entwicklungsprinzipien für „Clean Code“
„Clean Code“ ist zwar in aller Munde, aber was soll man sich unter sauberem Code vorstellen, wie kann man diesen im eigenen Unternehmen schreiben bzw. erreichen? SOLID, Inversion of Control, Messaging, automatisierte Tests, Continuous Integration sind nur eine kleine Auswahl der möglichen Mittel und Wege. Diese gilt es zu erlernen und sicher einzusetzen. Clean Code Development bietet den nötigen Rahmen, die Entwicklungsprinzipien und -techniken für „Clean Code“ im Detail anzuschauen, so dass künftiger Code bei bestehenden und neuen Projekten zum „Clean Code“ wird.
Wichtige Prinzipien des Clean Codes, basierend auf den Arbeiten von Robert Cecil Martin, Michael Feathers u. a.
- Was Clean Code ausmacht
- Coding Guidelines
- Namensgebung und Verwendung von Kommentaren
- Gängige Clean Code Regeln und Prinzipien
- Aufbau lose gekoppelter Strukturen
- SOLID-Prinzipien
- Einsatz von Entwurfsmustern
- Umgang mit Testautomatisierung und testgetriebener Entwicklung
- Refaktorisierung von bestehendem Code
- Code Metriken
- Hinweise auf schlechten Code (Code Smells)
- Sinnvoller Einsatz von Werkzeugen
- Grundlagen der agilen Arbeitsweise eines Entwicklers
- Gängige Entwurfsmuster und ihr Einsatz in modernen Architekturen
- Komposition komplexer Architekturen
- Refactoring von bestehendem Code zu kleinteiligen Komponenten
Code-Organisation und Continuous Integration
- Aufbau und gute Strukturierung von Projektbäumen wie u. a. einer Visual Studio Solution-Struktur
- Einführung in die Codeverwaltung Subversion und Git
- Buildskripte anhand von MSBuild und FAKE
- Deployment mit MSDeploy und Octopus Deploy
- CI-Konzepte Compile, Tests, Codequalität
Einführung in das automatisierte Testen mit Unit Test Frameworks
- Testarten wie Unit Tests, Integrationstests, Akzeptanztests und Systemtests
- Wie und wer testet Codeeinheiten
- Welche Test Frameworks eignen sich wofür
- Mocks und andere Test Doubles bzw. Mocking-Frameworks
- Integration von Tests in Buildskripts
Grundlagen moderner Architekturen verteilter Softwaresysteme
- Architekturstile wie Schichten, Pipes und Filter, CQRS und Hexagonal
- Serviceorientierung, „Software as a Service“ und Contract First-Ansatz z. B. mit REST
- Services erstellen, einbinden, aktualisieren, Durchsatz messen, loggen und debuggen
- Langlebige Geschäftsprozesse und Workflows (Sagas) umsetzen
- Sicherheit mit Authentifikation, Autorisation und SSL umsetzen
- Deployment als Anwendung, Windows-Dienst, IIS-Webseite und in Azure