Frankfurt, 21.02.2018
AspectJ für besseren Clean Code
Auf Konferenzen Vorträge zu halten, ist bei Scrum-Master.de vor lauter Arbeit in den letzten Jahren etwas in Vergessenheit geraten. Agile/Lean Coaching zu betreiben war irgendwie einfach wichtiger als darüber zu reden. Demnächst ist Alexander Kriegisch wieder als Redner zu erleben, allerdings in ungewohnter Weise, denn es geht um ein technisches Thema für Entwickler (Alexander dazu: "Das gönne ich mir!"), nicht um die Anwendung Agiler Methoden:
AspectJ für besseren Clean Code
von Alexander Kriegisch, Scrum-Master.de
21.02.2018, 10:45 - 11:30
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.