====== 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