Zum Inhalt springen
Informatik · Klasse 10 · Objektorientierte Modellierung und Programmierung · 1. Halbjahr

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.

KMK BildungsstandardsKMK: STD.02KMK: STD.08

Ü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

  1. Warum ist kontinuierliches Refactoring ein wichtiger Bestandteil der Softwareentwicklung?
  2. Wie identifiziert man 'Code Smells', die auf Verbesserungsbedarf hinweisen?
  3. 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

Grundlagen der objektorientierten Programmierung

Warum: Schüler müssen die Konzepte von Klassen, Objekten, Methoden und Variablen verstehen, um Refactoring-Techniken anwenden zu können.

Algorithmen und Kontrollstrukturen

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

RefactoringDie systematische Umstrukturierung von Quellcode, um dessen interne Qualität zu verbessern, ohne die externe Funktionalität zu verändern.
Code SmellEin Symptom im Quellcode, das auf ein tieferliegendes Problem hinweist und oft durch Refactoring behoben werden kann.
Duplizierter CodeIdentische oder sehr ähnliche Codeblöcke, die an mehreren Stellen im Programm vorkommen und die Wartbarkeit erschweren.
Lange MethodeEine 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 ZahlEin 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 ansehen

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

Gegenseitige Bewertung

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.

Lernstandskontrolle

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.

Kurze Überprüfung

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?
Code Smells sind Symptome schlechter Struktur, wie lange Methoden, duplizierter Code oder Primitive Obsession. Sie signalisieren Verbesserungsbedarf, ohne Funktionalität zu brechen. Schülerinnen und Schüler lernen, diese zu jagen, um Lesbarkeit zu steigern und Wartung zu erleichtern. Beispiele: Switch-Statements statt Polymorphie oder lange Parameterlisten.
Warum ist kontinuierliches Refactoring wichtig in der Softwareentwicklung?
Kontinuierliches Refactoring hält Code flexibel und reduziert technische Schulden. Es verkürzt Bugfixes, erleichtert Erweiterungen und fördert Teamzusammenarbeit. In Projekten sinken langfristig Kosten, da wartbarer Code schneller iteriert werden kann. Dies entspricht agilen Praktiken und KMK-Standards.
Wie bewertet man den Einfluss von Refactoring auf die Code-Qualität?
Metriken wie Cyclomatic Complexity, Lesbarkeits-Scores oder Testabdeckung helfen. Vorher-Nachher-Vergleiche zeigen Reduktion von Smells und Zeitersparnis bei Änderungen. Schülerinnen und Schüler messen in Aktivitäten subjektiv durch Peer-Feedback und objektiv durch Tools wie SonarQube.
Wie kann aktives Lernen das Verständnis von Refactoring fördern?
Aktives Lernen macht Refactoring greifbar durch Pair Programming und Code Reviews: Schülerinnen und Schüler entdecken Smells selbst, refactoren gemeinsam und testen Ergebnisse. Dies schafft Ownership und zeigt Effekte direkt. Kollaborative Stationen oder Diaries verstärken Retention, da Diskussionen Missverständnisse klären und Motivation steigern. Solche Methoden passen perfekt zu praxisnaher Informatik.

Planungsvorlagen für Informatik