LU07.A01 - Smell-Detektiv
Benennen Sie in sechs Codeausschnitten je den Code Smell und die passende Refactoring-Technik. Sie schreiben in dieser Aufgabe keinen Code.
Detaillierte Aufgabenstellung
Notieren Sie für jeden Ausschnitt:
- Smell: Wie heisst er?
- Problem: Was wird dadurch schwierig (lesen, ändern, testen)?
- Technik: Womit räumt man ihn auf?
Ausschnitt 1
def pruefen(b): if b["a"] >= 18 and b["s"] == 1 and b["guthaben"] > 0: return True return False
Ausschnitt 2
def versand(gewicht): if gewicht < 2: return 7.0 if gewicht < 10: return 12.5 return 24.9
Ausschnitt 3
def buchen(datum, kunde, artikel, menge, preis, waehrung, rabatt, lager_id): ...
Ausschnitt 4
def bestand_pruefen(lager, artikel): lager[artikel]["zugriffe"] += 1 return lager[artikel]["menge"]
Ausschnitt 5
namen = [] for k in kunden: if k["aktiv"]: namen.append(k["name"].upper())
Ausschnitt 6
zaehler = 0 def registrieren(name): global zaehler zaehler += 1 return f"{name} #{zaehler}"
Schritt-für-Schritt-Anleitung
- Gehen Sie die Ausschnitte einzeln durch und vergleichen Sie mit der Tabelle auf LU07b.
- Achtung bei Ausschnitt 2: Dort ist mehr als ein Smell diskutabel. Begründen Sie Ihre Wahl.
- Ordnen Sie jedem Smell genau eine Technik aus LU07c zu.
- Kürzen Sie das Ergebnis auf eine Tabelle mit drei Spalten - diese Tabelle können Sie direkt für den Lernnachweis D1B weiterverwenden.
