====== Code-Qualität/Refactoring ======
===== Code-Qualität =====
Von guter Software erwartet man nicht nur, dass sie funktioniert, sondern darüber hinaus, dass ihr Code leicht lesbar und anpassbar ist, auch von Software-Entwickler/-innen, die an der Erstellung des Codes nicht beteiligt waren. Man spricht von **Wartbarkeit** (//maintainability//) des Codes. \\ \\ 
Wichtige Kriterien wartbaren Codes:
  * sprechende Variablenbezeichner
  * Klassen mit eindeutiger Zuständigkeit
  * Eine Methode erfüllt genau eine Aufgabe
  * keine Code-Duplikate
  * Vererbung und design patterns sind sinnvoll eingesetzt
===== Refactoring =====
Unter **Refactoring** (//Refaktorierung//) versteht man die Verbesserung der Struktur des Programmcodes unter Beibehaltung der Funktionalität. \\ \\ 
**Mögliche Maßnahmen:**
  * Umbenennen von Variablen, Klassen, Methoden (-> "sprechende" Bezeichner!) \\ //"(renaming)"//
  * Aufteilen einer langen Methode in mehrere kürzere Methoden
  * Beseitigung von Code-Duplikaten durch Einführung einer neuen Methode
  * Verkleinerung von Klassen (Beschränkung auf einen einzigen Zuständigkeitsbereich!) durch Einführung einer Vererbungshierarchie
  * usw.