modul:m323:learningunits:lu07:loesungen:steckbrief

Action unknown: linkbutton

LU07.L02 - Technik-Steckbrief

Es gibt keine einzig richtige Auswahl. Die beiden folgenden Steckbriefe zeigen den erwarteten Detaillierungsgrad.

  • Auslöser: Lange Funktion mit Abschnittskommentaren
  • Zweck: Der herausgelöste Teil bekommt einen Namen und wird einzeln testbar; die aufrufende Funktion liest sich wie eine Zusammenfassung
  • Preis: Mehr Funktionen, mehr Sprünge beim Lesen. Bei zu kleinen Schnitten («jede Zeile eine Funktion») wird es unübersichtlicher als vorher
# vorher
def rechnung(positionen):
    total = 0
    for p in positionen:
        total += p["menge"] * p["einzelpreis"]
    return f"Total: {round(total, 2)} CHF"
 
# nachher
def gesamtsumme(positionen):
    return round(sum(p["menge"] * p["einzelpreis"] for p in positionen), 2)
 
def rechnung(positionen):
    return f"Total: {gesamtsumme(positionen)} CHF"
  • Auslöser: Profiling zeigt, dass x in liste der Hotspot ist
  • Zweck: Zugehörigkeitsprüfung von O(n) auf O(1); bei 10'000 Einträgen gemessen 0.107 s gegenüber 0.000068 s
  • Preis: Reihenfolge geht verloren, Duplikate verschwinden, Elemente müssen hashbar sein. Kein Ersatz, wenn die Reihenfolge Teil der Fachlichkeit ist
# vorher
gesperrt = [f"user{i}" for i in range(10000)]
# nachher
gesperrt = {f"user{i}" for i in range(10000)}
Kriterium Erfüllt, wenn
Zweck benennt konkret, was einfacher wird, nicht «sauberer»
Vorher/Nachher beide Fassungen lauffähig und mit gleichem Ergebnis
Preis ein realer Nachteil, nicht «keiner»
Performance-Massnahmen mit gemessener Zahl, nicht mit Behauptung
Funktionaler Bezug mindestens eine Technik betrifft Pipeline, pure oder immutable

© Kevin Maurizi

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