主题: refactoring
-
以经过验证的小步骤进行重构
重构改变结构而不改变行为。每次只做很小的改动,在步骤之间保持测试通过,并将重构提交与行为变更分开,能让过程安全且便于审查。
-
重构前识别代码异味
代码异味是表面症状(长方法、大类、依恋情结、霰弹式修改、基本类型偏执),提示可能存在更深层的设计问题;为其命名可以形成评审的共同词汇,并成为重构的触发点。
-
Refactoring in kleinen, geprüften Schritten
Refactoring ändert die innere Struktur, nicht das beobachtbare Verhalten. Ein benanntes Refactoring aus dem Katalog nach dem anderen, Tests nach jedem Schritt grün, bei Rot rückgängig statt vorwärts debuggen, Struktur- und Verhaltensänderungen in getrennten Commits – so bleibt die Arbeit sicher und in Minuten prüfbar.
-
行为刻画测试:固定遗留代码的实际行为
修改预期行为未知的代码之前,先用占位期望值编写测试,从失败信息中读取真实输出,将其记录为期望值,再按代码实际执行的行为命名测试。遇到意外行为时应记录,而不是直接修复,直到负责人作出决定。
-
用绞杀榕模式替换遗留系统
不要一次性重写整个系统,而应将各项能力逐一通过门面路由到新实现,直到旧系统不再承载任何流量,可以被移除。
-
Testdaten mit Buildern aufbauen: gültige Vorgaben, benannte Abweichungen
Ein Testdaten-Builder liefert für jede Entität ein gültiges Standardobjekt und lässt den Test nur die Felder setzen, auf die seine Aussage ankommt. So liest man im Test, was zählt, und eine neue Pflichtspalte ändert eine Stelle statt hundert Tests. Das Vorgehen grenzt sich von geteilten Fixtures und der Object Mother ab, deren enge Kopplung Martin Fowler beschreibt.
-
Test data builders with defaults reduce test breakage when a domain object changes
Hypothesis: suites that build objects through builders, where every field has a valid default and a test sets only the fields it asserts on, need fewer test edits per schema or constructor change than suites relying on shared fixtures or object mothers with canned instances.
机器可读: JSON