AspectJ für besseren Clean Code

Conference Day - 21. Februar
 
10:45
11:30
 
Technologien und Tools
 
Seminarraum 1.812

Aspektorientierte Programmierung (AOP) ist eine mächtige und hilfreiche Erweiterung des OOP-Paradigmas und fristet dennoch ein Schattendasein im Bewußtsein der meisten Entwickler und Architekten. AOP gilt als schwer zu verstehen, zu warten, zu debuggen. Völlig zu Unrecht, meint Alexander Kriegisch, seit über 10 Jahren AspectJ-Nutzer und Experte mit der weltweit mit Abstand höchsten Reputation zu den Tags "aop" und "aspectj" auf StackOverflow.

An einem exemplarischen Codebeispiel in Java zeigt Alexander, wie Code lesbarer, einfacher, wartbarer und insgesamt einfach schöner wird, wenn man über Module und Komponenten verstreute (Scattering) und ineinander verknotete (Tangling) Querschnittsaspekte, die mit der Kernanwendung im Grunde nichts zu tun haben, sauber aus ihr heraus und in Aspekt-Klassen hinein refaktorisiert. Solche Querschnittsaspekte (Cross-Cutting Concerns) wie z.B. Logging, Autorisierung und Authentisierung, Remoting, Persistenz, Implementation von Entwurfsmustern (Design Patterns), Tracing, Transaktionalität müssen mit Hilfe von AOP dann nicht mehr explizit im Code aufgerufen oder implizit über Marker-Annotationen aktiviert und parametrisiert werden sondern sind "einfach da" - ganz ohne Magie und ohne daß man als Entwickler Angst haben müßte, den Überblick zu verlieren, weil man das vormalige Konglomerat aus Kern- und Aspekt-Code nicht mehr linear herunterlesen kann. Alexander ist eher erleichtert, wenn er Code nicht mehr in dieser Form lesen muß sondern sich im jeweiligen Moment darauf konzentrieren kann, den Anwendungskern oder einen einzelnen Querschnittsaspekt besser zu verstehen.

Alexander zeigt, was man gewinnt, erklärt aber auch, was man investieren muß, denn wie bei jedem Werkzeug gilt auch für AspectJ oder andere AOP-Tools: kein Gewinn ohne Investition, kein Erfolg ohne Lernkurve! Aber der Lernaufwand steht in einem sehr attraktiven Verhältnis zum Ertrag. Alexander geht sogar so weit zu sagen: Jeder ernsthafte Entwickler im Java-Ökosystem sollte AspectJ kennen und beherrschen, um besseren Code und eleganteres Design im Sinne von Software Craftsmanship liefern zu können. AOP sollte heraus aus den Nischen, in denen es auch heute sowieso schon zu finden ist, z.B. JBoss AOP und Spring AOP, und hinein in den Mainstream.

Für den Vortrag wäre es hilfreich, Java-Code lesen zu können, aber das Beispiel ist im Grunde sehr simpel, und wer eine andere imperative (OOP-)Sprache wie JavaScript, C#, C++ beherrscht, wird auch zurecht kommen. AOP-Kenntnisse sind sicher hilfreich, aber nicht erforderlich.

Alexander Kriegisch

Scrum-Master.de - Agiles Projektmanagement, Deutschland

Alexander Kriegisch (Scrum-Master.de) ist seit 2006 als Agile / Lean Coach international im Einsatz und begleitet Kunden bei Agilen Transitionen, hilft ihnen bei der Skalierung auf Multi-Team- und Multi-Projekt-Umgebungen, verankert als Unternehmensberater agile Werte im Top Management und hilft als Change Agent bei der Organisationsentwicklung hin zu einer agileren Unternehmenskultur. Dabei arbeitet er sowohl auf grünen Wiesen als auch sehr gern als Troubleshooter in laufenden Projekten.

In der ersten Hälfte seiner Karriere war Alexander Softwareentwickler und ist es im Herzen auch geblieben. Er coacht immer noch gern bei Gelegenheit Entwickler hands-on in Bereichen wie Testautomatisierung, Refactoring, Pair Programming, Clean Code, Git Feature Branch Workflow, Build Management mit Maven, Continuous Integration mit Jenkins - oder eben in AOP mit AspectJ.