Share
Refactoring verstaubter Angular‑Komponenten mithilfe von KI
Im Workshop „Refactoring verstaubter Angular-Komponenten mithilfe von KI“ zeige ich, wie sich gewachsene, schwer wartbare Angular-Komponenten systematisch modernisieren lassen. Ausgangspunkt sind typische Legacy-Symptome wie überladene Dateien, unklare Zuständigkeiten, veraltete Angular-APIs und fehlende Typisierung. Gemeinsam erarbeiten wir einen klaren Blueprint für sauberes Refactoring mit Clean-Code-Prinzipien, TypeScript Best Practices und modernem Angular. Dabei geht es nicht um blindes „Vibe Coding“, sondern um kontrollierte, nachvollziehbare Modernisierung mit KI als Assistenz. Im Fokus stehen bessere Struktur, weniger Komplexität, präzisere Typen und eine wartbare Komponentenarchitektur. Anhand eines konkreten Praxisbeispiels wird gezeigt, wie KI den Refactoring-Prozess sinnvoll beschleunigen kann, ohne die architektonische Verantwortung aus der Hand zu geben. Der Workshop richtet sich an Angular-Entwickler:innen, die bestehende Frontends zukunftsfähig machen möchten.
Alex T
Transcript
72 slides
-
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer Refactoring verstaubter
Angular-Komponenten mithilfe von KI J Alexander Thalhammer · ANGULARarchitects.io h"ps://LXT.dev -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 2 Good
news! No Vibe Coding 🎉 Blueprint 🤙 Praxis-Beispiel 🤓 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer • Über
Jahre kommen Features, Sonderfälle und Workarounds hinzu • Verantwortlichkeiten verschwimmen zwischen UI, State und Business-Logik • Code-Lesbarkeit sinkt und Änderungen werden riskanter • Teams gewöhnen sich an schlechten Code statt ihn zu hinterfragen 0.1 Das Problem: Warum viele Angular- Komponenten zu Monstern werden 3 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer • Alte
Angular Patterns, die nicht modernisiert wurden (*ngIf, @Input(), ngClass …) • 400 bis 800 (oder noch mehr) LoC in einer einzelnen Datei • Viele Lifecycle Hooks (ngOnChanges) und schwer nachvollziehbare Seiteneffekte • Unklare Symbol-Benennung, AI-generierter Code und fehlende Struktur • Komplexe View-Templates (.html) mit zu viel Logik • Unaufgeräumte Stylesheets (.scss) mit viel Redundanz 0.2 Typische Symptome verstaubter Komponenten 4 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer • Hohe
mentale Last bei jeder Anpassung • Fehleranfällige Änderungen und Regressionen • Langsame Entwicklung trotz erfahrener Teams • Schwieriges Onboarding neuer Entwickler:innen 0.3 Was kosten solche Komponenten 5 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer • Eine
klare Vorstellung für moderne, saubere Angular Komponenten • inkl. Clean Code-, TypeScript-, Angular-Best-PracUces • Dann modernisieren wir systemaUsch: APIs, Life Cycles • Eine wiederholbare Modernisierungs- und Refactoringstrategie à Blueprint • KI nutzen damit Refactoring schneller geht und Spaß macht J 0.4 Was wir in dem Workshop erreichen wollen 6 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer • Kleine,
klar fokussierte Komponenten mit einer erkennbaren Hauptverantwortung • Signale, computed state und schlanke Templates ersetzen implizite Seiteneffekte • Regeln aus Style Guide, ESLint und Teamkonventionen machen Qualität reproduzierbar • KI beschleunigt Umbauten, aber die Architekturentscheidungen bleiben menschlich 0.5 Wie gute Angular Komponenten aussehen 7 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 8 Agenda
1. Setup IDE & KI 🚀 2. Guardrails für gutes KI-Refactoring 3. Modern Angular, Angular Migrations & Angular Best Practices 4. Blueprint & Praxisbeispiel -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer Wie behandeln
hier nicht, wie man KI nutzt, sondern ich möchte euch zeigen • wie saubere Angular-Komponenten aussehen • wie wir verstaubte oder gar dreckige Komponenten sauber machen • ihr bekommt einen Blueprint zur Modernisierung & zum Refactoring Ziel des Workshops 9 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 11 •
Alexander Thalhammer aus Graz, AT, EU (est. 1983) • Angular So+ware Tree GmbH (est. 2019) • Web Dev seit 25 Jahren • Seit 2017 Angular Dev • Seot 2021 Angular Evangelist, Coach & Consultant • Teil der Angular Architects • Seit ein paar Monaten heavy AI User • What can you do? 🤷 Hi, it's me à @LX_T https://LXT.dev -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 12 @LX_T
à meine Lieblingsthemen Performance 🚀 Accessibility ♿ Best Practices 📈 Refactoring 🤖 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 13 •
I consider myself an Angular guru 🧑🏫 • But not yet an AI senior (who is?) • à gerne Feedback (bzw. KriUk oder Anmerkungen!) • Der Workshop läu_ noch unter experiementell • Alle Slides und die Übungsanleitung (noch!) handgemacht • Und es sind zu viele Slides für 3h :-P Disclaimer(s) -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 14 Teil
1 – Setup IDE & KI 🚀 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 15 •
Zuerst richten wir Prettier, ESLint und IDE ein sodass jedes Ergebnis denselben Qualitätsrahmen hat • Danach bekommt die KI Instruktionen über • AGENTS.md • MCP • .aiignore • Schließlich noch ein paar Tipps für AI Agents 1.0 Agenda Teil 1 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 16 1.1
Essential I: Prettier { "bracketSameLine": true, "printWidth": 120, // or 140 "singleQuote": true } { "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnPaste": true, "editor.formatOnSave": true, "prettier.documentSelectors": ["**/*.{css,html,js,md,scss,ts}"] } pnpm i -D prettier -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 18 •
Der Linter prüft unsere Best Practices konkret ab • Standardsätze verwenden für JS, TS, Angular sowie Angular A11y • Wichtige zusätzliche Regeln sind explizite Types und max 400 LoC • Dient als wichtige Checkliste für sowohl Devs 🤓 als auch KI 🤓 1.2 Essential II: ESLint -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 20 1.3
Welche IDE nehmen? -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 21 •
VS Code punktet mit Plugin-Ökosystem und leichter MCP-Konfiguration • WebStorm punktet mit starker Angular- und Refactoring-Unterstützung • Cursor hatte als erste volle KI-Integration • IDE ist Geschmacksache, aber Formatter, Linter und KI-Kontext sollten sauber vereinheitlicht sein 1.4 IDE Vergleich -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 22 •
Achtung oppinionated: Mein Lieblingssetup! • IMHO beste KI-Integration unter allen IDEs • Wahl des LLMs eher nebensächlich • Claude Sonnet 4.6 oder Opus 4.6 (deep thinking) • Gemini 3.1 Pro oder • GPT 5.4 oder 5.3-codex 1.5 KI Options I: WebStorm mit Junie -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 23 Demo:
WebStorm mit Junie -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 24 •
Claude Code ist ein Refactoring Agent erster Klasse • Funkioniert sehr gut in VS Code, derzeit populärste Option!? • Alternativen • Gemini CLI oder • Codex Plugin • GitHub Copilot (might be a bit outdated) 1.6 OpUon II: VS Code mit Claude Code -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 25 Demo:
VS Code mit Claude Code Plugin -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 27 •
Aterna\ven zu WebStorm und VS Code • Cursor • Windsurf • Who will win the race? • Nobody knows J 1.7 Option III & IV: Cursor oder Windsurf -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 28 •
Hier stehen Regeln für die KI "AGENTS.md" oder spezifisch "CLAUDE.md" • Architekturentscheidungen, Angular-Version, modernes Angular, No-Gos und Refactoring-Prinzipien • Wirken in Kombination mit Angular MCP • Manche verwenden auch "SKILLS.md", aber ich bin skeptisch 1.8 AGENTS.md à AI instrucUons -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 29 •
Angular MCP bringt aktuelle Dokumentation und Angular-Wissen direkt in den Agentenfluss • Nx MCP liefert Monorepo-Kontext, Tasks, Projektgraph und AI-Hilfen für Workspace-Strukturen • Figma MCP ergänzt Design-Kontext, Komponenten und Variablen für UI-nahe Refactorings • Zusammen entsteht aus einem Sprachmodell ein besser informierter Architektur-Assistent 1.9 MCP Config -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 30 •
Hier kommt alles rein, was die KI nicht angreifen soll • node_modules • cache • coverage • dist … 1.10 .aiignoreà AI ignore like .gitignore -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 32 Demo:
AGENTS.md, MCP Config & .aiignore -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 33 •
Gute Prompts starten mit Beobachtung, Ziel und Randbedingungen • Spec: Je besser die Spezifikation (von Anfang an – nicht iterativ), desto besser das Ergebnis • Scope: welcher Kontext, welche Datei, welcher gewünschte Output • Prüfung: zum Beispiel ESLint-konform, alle Tests müssen validieren • Abfolge: • 1. Do a planing and ask me clarification questions (Claude is good at planning!) • 2. Implement it 1.11 Agent Prompting in der IDE -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 34 •
Umbau-Nutzen: weniger Komplexität, klarere Zuständigkeit oder modern • Kommantere: Bestehende Kommentare und Domänen werden nicht gelöscht • Reviews: Kein Rewrite ohne Zwischenschritte, die sich lesen und prüfen lassen • Ich persönlich behandle (derzeit noch) alles vom Agent wie die Arbeit eines Juniors, das heißt ich prüfe alle gemachten Änderungen vor Commit 1.12 AI Guardrails -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 35 •
preUerrc.json & eslint.config.js • Choose your weapon of choice • WebStorm mit Junie, VS Code mit Claude Code oder Cursor oder Windsurf • AGENTS.md, MCP, .aiignore • Agent Promp\ng & AI Guardrails Als nächstes kümmern wir uns um weitere, spezifischere Guardrails Teil 1 Zusammenfassung -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 36 Teil
2 – Guardrails für gutes KI-Refactoring -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 37 •
Clean Code Principles • Struktur • Funktionen • Typisierung 2.0 Agenda Teil 2 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 38 •
Schlechter Code ist nicht nur für Menschen teuer, sondern auch für KI-Agenten schwerer zu erfassen • Gute Namen, kleine Funktionen und klare Typen reduzieren Missverständnisse und Halluzinationen 2.1 Warum Clean Code für KI? -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 39 •
Jedes Feld und jede Funk\on und sollte sich durch den Namen selbst erklären und eine klare Rolle im Lesefluss der Komponente haben • Die Symbolnamen tragen Bedeutung, Typen machen Verträge explizit und kleine Einheiten begrenzen den Scope bzw. den Context 2.2 Clean Code Principles I - Naming -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 40 •
KISS: Lesbarkeit vor Cleverness, Kommentare sollten in den meisten Fällen nicht notwendig sein • und natürlich DRY: • gemeinsame Logik in Services, Direktiven, Pipes, Utils oder Sub-Komponenten 2.3 Clean Code Principles II – KISS & DRY -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 41 •
Single Responsibility: Jeder Building Block hat eine klare Aufgabe • Rule of One: Jedes Ding bekommt seine eigene Datei • private, readonly und const bevorzugen • Max. ~400 LoC pro Datei • complexity beschränkt die Komplexität (auch in View-Templates) • sort-imports und prefer-const bringen Übersicht 2.4 Clean Code Principles III -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 42 •
Angular-spezifische Properties gruppieren statt wild verteilen • Abhängigkeiten, Inputs, Outputs, Signals und Methoden klar ordnen • Zusammengehörige Dinge nah beieinander halten • Die Komponente soll von oben nach unten lesbar sein 2.5 Struktur statt Zufall -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 43 •
decorator (@Component) • class (extends & implements) • members • injects • input • model • output • queries • signals • computed • other members • methods • staCc • constructor • other methods 2.6 Struktur statt Zufall – Vorschlag -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 44 •
Große Event-Handler mischen häufig Validierung, Mapping, State-Update und UI-Nebenwirkungen • Ein gutes Refactoring trennt diese Schritte in kleine, benannte Funktionen mit klarer Absicht • Benennungen wie buildRequest, validateInput oder updateSelection erklären den Code fast selbst • Die KI ist hier besonders stark, wenn sie zuerst den Ablauf beschreiben und dann schneiden darf 2.7 FunkUonen verkleinern & präzisieren -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 45 •
Strict Typing - any vermeiden • Returntyp • Parametertyp • einfach alles hat 'nen Typ J • Der erste Hebel in Legacy-Code ist oft das Ersetzen unscharfer Typen durch explizite Typen (oder Interfaces) • Meine Guidelines bevorzugen unknown vor any und types vor interfaces • Auch kleine Typenextraktionen reduzieren mentale Last • Komponente wird lesbarer, durch präzise benannte & typisierte In- und Outputs 2.8 Typen als Sicherheitsnetz -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 46 2.9
Vorher vs Nachher – Naming & Typing items: any[] = []; sel: any; save(data: any) { const x = this.items.find( (i) => i.id === data.id ); if (x) { this.sel = x; } } type OrderItem = { id: string; label: string; }; // put in another file J protected readonly items: OrderItem[] = []; protected selectedItem: OrderItem | null = null; protected selectItem(item: OrderItem): void { const selectedItem = this.items.find( (currentItem) => currentItem.id === item.id ); if (!selectedItem) { return; } this.selectedItem = selectedItem; } -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 47 •
Clean Code reduziert mentale Last für Menschen und KI • Klare Namen und präzise Typen machen Refactorings sicherer • Kleine Komponenten und Funktionen machen Änderungen beherrschbar • Gute Typisierung und Datenbindung hilft ebenfalls Jetzt, wo Struktur, Typen & Lesefluss stimmen, modernisieren wir Angular Teil 2 Zusammenfassung -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 48 Teil
3 – Modern Angular, Angular Migrations & Angular Best Practices -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 49 •
Modern Angular Speedrun • Security & Updates • Angular Migrations (imho obligatory!) • Testing & Ökosystem • Angular Coding Style Guide • Angular Best Practices ESLint config 3.0 Agenda Teil 3 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 50 •
inject() • Standalone • Control Flow • Reac\vity mit Signals und dem Gamechanger computed() • DataBinding mit input, output & model, sowie signal queries & ressource API 3.1 Modern Angular I -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 51 •
Ersetze all lifecycle hooks mit • constructor() – besonders für Subscriptions mit takeUntilDestroyed • effect(), afterNextRender(), afterEveryRender() und afterRenderEffect() • ChangeDetection.OnPush & zoneless • SignalStore (nur wenn Du ihn wirklich brauchst!) • SignalForms (Forms endlich richtig gemacht!) 3.2 Modern Angular II -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 52 •
CSP Policies • Trusted Types Setup • Alles Aktualisieren, insbesondere 3rd Party Pakete 3.3 Security -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 53 •
mindestens 2x pro Jahr (Major), besser alle 2 Monate (Minor) • mit ng update bzw. nx migrate latest • alle andere NPM-Pakete entsprechend mitnehmen, doch das alleine ist nicht genug 3.4 Updates -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 54 3.5
Angular MigraUons (opt-in is a must!) standalone control flow build w/ esbuild & vite lazy-loaded routes mit loadComponent signal inputs, outputs & queries inject() & cleanup imports & self- closing tags & ngClass & ngStyle router & common -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 55 Showcase:
Angular Migrations https://angular.dev/reference/migrations -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 56 •
e2e Tests mit Playwright à für mich das Wich\gste • Unit Tests mit Vitest, eventuell Analog für Tooling • UI Component Doku mit Storybook • alles andere wenn möglich migrieren à natürlich mit KI J 3.6 Testing -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 57 •
Unbedingt PNPM statt NPM / yarn • Optional Stylelint wenn man SCSS auch Linten möchte • Optional Nx für größere Projekte/Libraries/Monorepo • Optional Component Libraries bzw. Design Systeme • Angular Material (sehr eigen, schwer zu customizen) • oder ZardUI (modern, lean, basiert auf shadcn) • à super wenn es brauchbaren Figma MCP gibt 3.7 Ökosystem -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 58 •
One concept per file and inject() • Group Angular-specific proper\es before methods • Keep components and direc\ves focused on presenta\on • Avoid overly complex logic in templates • Use protected on class members … only used by … template • Use readonly for proper\es that shouldn't change 3.8 Official Angular Coding Style Guide (Excerpt) -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 59 Showcase:
Angular v20 Style Guide https://angular.dev/style-guide -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 60 •
suffix observables with $ • prefer using the AsyncPipe, use the takeUntilDestroyed() operator if subscribing manually • keep constructors and lifecycle hooks simple and clean (basically only call methods, except one-liners) • group components, directives, pipes & services like this • … 3.9 LXT's Angular Coding Style Guide (Excerpt) -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 61 Showcase:
My Coding Style Guide https://github.com/L-X-T/ng-b357/blob/main/style-guide/style-guide.md -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 62 •
'@angular-eslint/no-empty-lifecycle-method' à better no lifecycle at all • '@angular-eslint/prefer-on-push-component-change-detection' • '@angular-eslint/prefer-output-readonly' • '@angular-eslint/prefer-signals' • '@angular-eslint/prefer-standalone' 3.10 Angular ESLint Best Practices .ts -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 63 •
'@angular-eslint/template/attributes-order' • '@angular-eslint/template/button-has-type' • '@angular-eslint/template/prefer-control-flow' • '@angular-eslint/template/prefer-ngsrc' • '@angular-eslint/template/prefer-self-closing-tags' 3.11 Angular ESLint Best Practices .html -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 64 •
Angular unbedingt up2date halten um Sicherheit und moderne Features zu gewährleisten à auch die Migrations mitnehmen à KI hilft J • Angular Coding Style Guide befolgen à KI braucht Angular MCP • Angular ESLint Regeln scharf schalten à KI braucht extra Hinweis Teil 3 Zusammenfassung -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 65 Teil
4 – Blueprint & Praxisbeispiel -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 66 1.
Analyse 2. Entschlacken 3. NG Update 4. Modernisieren 5. Typisierung 6. Refactoring 7. Review 4 Die 7 Schritte-Vorgehensweise (Blueprint) -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 67 Teil
4 – Praxis: Refactoring einer (sehr) verstaubten Angular-Komponente https://github.com/L-X-T/ng-days-refactoring-ai -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer Let AI
do the hard work to improve & modernize our Angular workspaces! -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 71 Questions
& Feedback Bitte gebt mir euer Feedback in der App <3 -
• Textmasterformat bearbeiten • Zweite Ebene Alexander Thalhammer 72 [X]
@LX_T [web] https://LXT.dev Thank you for the attention Workshops and Consulting https://angulararchitects.io