Sechs Kolleginnen und Kollegen behaupten, ein Refactoring gemacht zu haben. Prüfen Sie: Stimmt das? Bei welchen hat sich das Verhalten heimlich geändert?
Beurteilen Sie jedes Paar. Notieren Sie: echtes Refactoring oder Verhaltensänderung - und im zweiten Fall, welcher Aufrufer davon betroffen wäre.
# vorher def sortierte_namen(namen): kopie = list(namen) kopie.sort() return kopie # nachher def sortierte_namen(namen): return namen.sort()
# vorher werte = [n * n for n in range(1000)] print(sum(werte), max(werte)) # nachher werte = (n * n for n in range(1000)) print(sum(werte), max(werte))
# vorher def sammeln(x, ziel=None): ziel = [] if ziel is None else ziel ziel.append(x) return ziel # nachher def sammeln(x, ziel=[]): ziel.append(x) return ziel
# vorher aktive = [] for k in kunden: if k["aktiv"]: aktive.append(k) # nachher aktive = [k for k in kunden if k["aktiv"]]
# vorher def zuordnen(bestellungen, kunden): return [(k["name"], b["betrag"]) for b in bestellungen for k in kunden if k["id"] == b["kunde_id"]] # nachher def zuordnen(bestellungen, kunden): index = {k["id"]: k for k in kunden} return [(index[b["kunde_id"]]["name"], b["betrag"]) for b in bestellungen]
# vorher def hat_treffer(eintraege, gesucht): return len([e for e in eintraege if e["id"] == gesucht]) > 0 # nachher def hat_treffer(eintraege, gesucht): return any(e["id"] == gesucht for e in eintraege)