Refactoring und Code-Qualität
Die Schülerinnen und Schüler wenden Refactoring-Techniken an, um die Lesbarkeit, Wartbarkeit und Effizienz von bestehendem Code zu verbessern.
Über dieses Thema
Refactoring und Code-Qualität umfasst Techniken, um bestehenden Code ohne Änderung der Funktionalität lesbarer, wartbarer und effizienter zu machen. Schülerinnen und Schüler in Klasse 10 lernen, Code Smells wie duplizierten Code, lange Methoden oder magische Zahlen zu erkennen. Sie üben Techniken wie das Extrahieren von Methoden, Umbenennen von Variablen und das Einführen von Konstanten. Dies schult das Auge für Qualitätsmängel und verbindet direkt mit den KMK-Standards STD.02 (algorithmisches Denken) und STD.08 (programmierpraktische Kompetenzen). Die Key Questions betonen, warum kontinuierliches Refactoring essenziell ist: Es verkürzt Projektlaufzeiten langfristig und sichert stabile Software.
Im Rahmen der Unit Objektorientierte Modellierung und Programmierung baut dies auf SOLID-Prinzipien auf und fördert professionelle Entwicklungspraktiken. Schülerinnen und Schüler bewerten, wie Refactoring die Teamarbeit erleichtert und Fehler reduziert. Es entwickelt Fähigkeiten wie kritisches Analysieren und iteratives Verbessern, die in realen Projekten unverzichtbar sind.
Aktives Lernen eignet sich hervorragend für dieses Thema, weil Peer-Reviews und kollaboratives Refactoring abstrakte Konzepte konkret erlebbar machen. Wenn Schülerinnen und Schüler Code vor und nach dem Refactoring vergleichen oder in Gruppen Smells jagen, internalisieren sie Qualitätsstandards nachhaltig und motivieren sich gegenseitig durch Diskussionen.
Leitfragen
- Warum ist kontinuierliches Refactoring ein wichtiger Bestandteil der Softwareentwicklung?
- Wie identifiziert man 'Code Smells', die auf Verbesserungsbedarf hinweisen?
- Bewerten Sie die Auswirkungen von Refactoring auf die Projektlaufzeit und die langfristige Code-Qualität.
Lernziele
- Identifizieren Sie 'Code Smells' in gegebenem Quellcode, die auf Refactoring-Bedarf hinweisen.
- Wenden Sie spezifische Refactoring-Techniken wie 'Extract Method' oder 'Rename Variable' an, um die Code-Qualität zu verbessern.
- Analysieren Sie die Auswirkungen von Refactoring auf die Lesbarkeit und Wartbarkeit von Code-Abschnitten.
- Bewerten Sie die Effizienz von zwei Code-Varianten vor und nach dem Refactoring hinsichtlich ihrer Laufzeit.
- Erklären Sie die Notwendigkeit kontinuierlichen Refactorings für die langfristige Projektgesundheit.
Bevor es losgeht
Warum: Schüler müssen die Konzepte von Klassen, Objekten, Methoden und Variablen verstehen, um Refactoring-Techniken anwenden zu können.
Warum: Ein grundlegendes Verständnis von Kontrollflüssen (if-else, Schleifen) ist notwendig, um die Auswirkungen von Refactoring auf die Logik eines Programms zu beurteilen.
Schlüsselvokabular
| Refactoring | Die systematische Umstrukturierung von Quellcode, um dessen interne Qualität zu verbessern, ohne die externe Funktionalität zu verändern. |
| Code Smell | Ein Symptom im Quellcode, das auf ein tieferliegendes Problem hinweist und oft durch Refactoring behoben werden kann. |
| Duplizierter Code | Identische oder sehr ähnliche Codeblöcke, die an mehreren Stellen im Programm vorkommen und die Wartbarkeit erschweren. |
| Lange Methode | Eine Methode, die zu viele Anweisungen enthält, was ihre Lesbarkeit und Verständlichkeit beeinträchtigt und oft auf mehrere kleinere Methoden aufgeteilt werden sollte. |
| Magische Zahl | Ein numerischer oder Zeichenketten-Literalwert, dessen Bedeutung nicht sofort ersichtlich ist und der durch eine benannte Konstante ersetzt werden sollte. |
Vorsicht vor diesen Fehlvorstellungen
Häufige FehlvorstellungRefactoring ändert immer die Funktionalität des Codes.
Was Sie stattdessen lehren sollten
Refactoring bewahrt die externe Verhalten bei interner Umstrukturierung. Aktive Ansätze wie Unit-Tests vor und nach dem Refactoring zeigen dies empirisch. Peer-Diskussionen klären, dass Tests scheitern, wenn Funktionalität geändert wird.
Häufige FehlvorstellungGuter Code muss von Anfang an perfekt sein.
Was Sie stattdessen lehren sollten
Perfektion ist illusorisch; Refactoring ermöglicht Evolution. Durch iterative Pair-Sessions lernen Schülerinnen und Schüler, dass frühe Perfektion Zeit kostet, während Refactoring flexibel hält. Kollaborative Reviews festigen diesen Shift.
Häufige FehlvorstellungRefactoring verlängert nur die Projektzeit.
Was Sie stattdessen lehren sollten
Kurzfristig ja, langfristig spart es durch weniger Bugs. Vorher-Nachher-Vergleiche in Gruppen machen den ROI sichtbar und motivieren zu routinemäßigem Refactoring.
Ideen für aktives Lernen
Alle Aktivitäten ansehenPair Programming: Smell-Jagd
Paare erhalten unrefaktorierten Code und identifizieren gemeinsam drei Code Smells. Sie refactoren schrittweise: Zuerst umbenennen, dann extrahieren, zuletzt testen. Am Ende präsentieren sie die Verbesserungen.
Lernen an Stationen: Refactoring-Techniken
Richten Sie Stationen für Extrahieren Methode, Replace Temp with Query und Introduce Parameter Object ein. Gruppen rotieren alle 10 Minuten, dokumentieren Vorher-Nachher-Code und diskutieren Vorteile.
Code Review Circle
Jede Schülerin oder jeder Schüler schreibt eine kleine Methode. Im Kreis reicht man den Code weiter, jeder notiert einen Smell und schlägt eine Refactoring-Idee vor. Abschließend implementiert man kollektiv.
Individuell: Refactoring Diary
Schülerinnen und Schüler refactoren ihren eigenen Code aus einer Vorlesung. Sie führen ein Diary: Smell, Technik, Zeitaufwand, Qualitätsgewinn. Teilen Sie Highlights in Plenum.
Bezüge zur Lebenswelt
- Softwareentwickler bei großen Tech-Unternehmen wie Google oder Microsoft wenden täglich Refactoring-Techniken an, um die riesigen Codebasen ihrer Produkte wie Android oder Windows wartbar zu halten und neue Features effizient zu integrieren.
- In der Spieleentwicklung nutzen Programmierer Refactoring, um die Performance von Spiel-Engines zu optimieren und sicherzustellen, dass komplexe Spielmechaniken auch auf unterschiedlicher Hardware flüssig laufen.
- Open-Source-Projekte wie die Linux-Distribution Ubuntu profitieren von gemeinschaftlichem Refactoring, bei dem viele Entwickler weltweit zur Verbesserung der Code-Qualität beitragen, was die Stabilität und Sicherheit des Systems erhöht.
Ideen zur Lernstandserhebung
Geben Sie den Schülerinnen und Schülern jeweils einen kurzen Code-Schnipsel mit offensichtlichen 'Code Smells'. Lassen Sie sie diesen mit einem Partner austauschen. Jeder Schüler identifiziert und notiert mindestens zwei 'Code Smells' im Code des Partners und schlägt eine konkrete Refactoring-Maßnahme vor.
Bitten Sie die Schülerinnen und Schüler, auf einer Karte eine der folgenden Fragen zu beantworten: 1. Nennen Sie einen 'Code Smell', den Sie heute gelernt haben, und erklären Sie kurz, warum er problematisch ist. 2. Beschreiben Sie eine Refactoring-Technik und wie sie die Code-Qualität verbessert.
Zeigen Sie einen kurzen Code-Abschnitt an der Tafel, der eine 'Magische Zahl' enthält. Fragen Sie: 'Was ist hier problematisch und wie könnten wir das verbessern?' Sammeln Sie die Antworten der Schülerinnen und Schüler, um das Verständnis zu überprüfen.
Häufig gestellte Fragen
Was sind typische Code Smells beim Refactoring?
Warum ist kontinuierliches Refactoring wichtig in der Softwareentwicklung?
Wie bewertet man den Einfluss von Refactoring auf die Code-Qualität?
Wie kann aktives Lernen das Verständnis von Refactoring fördern?
Planungsvorlagen für Informatik
Mehr in Objektorientierte Modellierung und Programmierung
Einführung in die Objektorientierung
Die Schülerinnen und Schüler lernen die Grundkonzepte der Objektorientierung kennen und identifizieren Objekte in realen Szenarien.
3 methodologies
Klassen und Objekte definieren
Die Schülerinnen und Schüler entwerfen Klassen als Baupläne und instanziieren Objekte mit spezifischen Eigenschaften.
3 methodologies
Methoden und Attribute
Die Schülerinnen und Schüler implementieren Methoden zur Interaktion mit Objekten und verwalten deren interne Zustände durch Attribute.
3 methodologies
Konstruktoren und Objektinitialisierung
Die Schülerinnen und Schüler nutzen Konstruktoren zur initialen Konfiguration von Objekten und verstehen deren Lebenszyklus.
3 methodologies
Vererbung: Hierarchien bilden
Die Schülerinnen und Schüler wenden das Prinzip der Vererbung an, um Klassenhierarchien zu erstellen und Code-Duplizierung zu vermeiden.
3 methodologies
Polymorphie: Vielfalt nutzen
Die Schülerinnen und Schüler nutzen Polymorphie, um mit Objekten unterschiedlicher Typen über eine gemeinsame Schnittstelle zu interagieren.
3 methodologies