ScholarGate
Assistent

Code-Qualität und Refactoring

Code-Qualität und Refactoring befassen sich mit dem Schreiben von Quellcode, der lesbar, wartbar und gut strukturiert ist, sowie mit disziplinierten Techniken zur Verbesserung der internen Struktur von bestehendem Code, ohne dessen externes Verhalten zu ändern.

Thema finden mit PaperMindDemnächstFind papers & topics
Tools & resources
Folien herunterladen
Learn & explore
VideoDemnächst

Definition

Refactoring ist der Prozess der Änderung eines Softwaresystems in einer Weise, die dessen beobachtbares Verhalten nicht verändert, aber seine interne Struktur verbessert, und Code-Qualität ist der Grad, in dem Quellcode Lesbarkeit, Wartbarkeit und ein solides internes Design aufweist.

Scope

Dieses Thema behandelt die Lesbarkeit und Benennung von Code, Kohäsion und Kopplung auf Code-Ebene, Code-Smells, die auf Designprobleme hinweisen, den Katalog der verhaltenserhaltenden Refactorings, die Rolle automatisierter Tests beim sicheren Refactoring sowie Code-Qualitätsmetriken und statische Analysewerkzeuge, die zur Bewertung und Durchsetzung von Standards verwendet werden.

Core questions

  • Welche Eigenschaften machen Quellcode lesbar und wartbar?
  • Wie signalisieren Code-Smells, wo Refactoring erforderlich ist?
  • Wie kann die Struktur verbessert werden, ohne das Verhalten zu ändern oder Fehler einzuführen?
  • Wie werden Code-Qualität und ihr Verfall im Laufe der Zeit gemessen?

Key theories

Verhaltenserhaltendes Refactoring
Refactoring wendet kleine, verhaltenserhaltende Transformationen nacheinander an, die jeweils durch Tests verifiziert werden, um die Struktur inkrementell und sicher zu verbessern, anstatt durch riskante große Neuschreibungen.
Code-Smells als Design-Heuristiken
Wiederkehrende oberflächliche Symptome – lange Methoden, duplizierter Code, große Klassen, „Feature Envy“ – dienen als Heuristiken, die auf tiefere Designprobleme hinweisen und spezifische Refactorings zu deren Behebung vorschlagen.

Clinical relevance

Eine hohe Code-Qualität senkt die Kosten für das Verständnis und die Änderung von Software, die den Großteil ihrer Gesamtkosten ausmachen; kontinuierliches Refactoring hält eine Codebasis anpassungsfähig und ist unerlässlich, um agile Entwicklung aufrechtzuerhalten und technische Schulden zu kontrollieren.

Evidence & guidelines

ISO/IEC 25010 rahmt Wartbarkeit und andere Qualitätsmerkmale ein, und statische Analysewerkzeuge setzen Codierungsstandards durch und erkennen „Smells“ anhand von Projektregeln.

History

Refactoring-Praktiken wurden 1999 von Fowler systematisiert und entwickelten sich parallel zu testgetriebener Entwicklung und agilen Methoden, die auf kontinuierlicher, testgeschützter Umstrukturierung basieren; „Clean-Code“-Handwerk und automatisierte statische Analyse verstärkten später die Disziplin der Code-Qualität.

Debates

Wie viel Refactoring ist gerechtfertigt?
Teams diskutieren, wie aggressiv refaktorisiert werden sollte: Kontinuierliche kleine Verbesserungen halten den Code gesund, verbrauchen aber Aufwand, während das Aufschieben von Umstrukturierungen technische Schulden anhäuft; das Gleichgewicht hängt von der Langlebigkeit und Änderungsrate des Codes ab.

Key figures

  • Martin Fowler
  • Kent Beck
  • Robert C. Martin
  • Steve McConnell

Related topics

Seminal works

  • fowler2018
  • mcconnell2004
  • martin2008

Frequently asked questions

Ändert Refactoring, was ein Programm tut?
Nein. Per Definition bewahrt Refactoring das beobachtbare Verhalten; es strukturiert interne Komponenten um, um die Lesbarkeit und das Design zu verbessern. Automatisierte Tests werden verwendet, um zu bestätigen, dass das Verhalten nach jeder Transformation unverändert bleibt.
Warum in Code-Qualität investieren, wenn die Software bereits funktioniert?
Die meisten Kosten eines Systems entstehen durch das spätere Verständnis und die Änderung; schlechte Code-Qualität verlangsamt jede zukünftige Modifikation und erhöht das Fehlerrisiko, sodass sich Investitionen in Qualität über die gesamte Lebensdauer der Software auszahlen.

Methods for this concept

Related concepts