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.

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}"
  1. Gehen Sie die Ausschnitte einzeln durch und vergleichen Sie mit der Tabelle auf LU07b.
  2. Achtung bei Ausschnitt 2: Dort ist mehr als ein Smell diskutabel. Begründen Sie Ihre Wahl.
  3. Ordnen Sie jedem Smell genau eine Technik aus LU07c zu.
  4. Kürzen Sie das Ergebnis auf eine Tabelle mit drei Spalten - diese Tabelle können Sie direkt für den Lernnachweis D1B weiterverwenden.

© Kevin Maurizi

  • modul/m323/learningunits/lu07/aufgaben/smelldetektiv.txt
  • Zuletzt geändert: 2026/09/09 11:12
  • von admin