====== 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 [[modul:m323:learningunits:lu07:smells|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 [[modul:m323:learningunits:lu07:techniken|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. ---- {{tag>M323-LU07 M323-D1B}} [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi