# 1. 重构的"业务影响"(business impact)的评估 A 重构只能用代码行数衡量,与业务无关 B 应把重构收益翻译成业务语言,如缩短交付时间、降低缺陷率,优先重构支撑核心流程且高频演进的模块 ✓ 正确答案 C 任何重构都一定有业务价值 D 业务影响评估与技术债无关
# 2. 重构的"停止条件"(stop condition)中何时停止重构、避免过度抽象 A 重构应永远持续到代码完美 B 停止条件就是代码行数最小化 C 达到预期目标即停止,避免引入无收益的抽象层导致过度抽象 ✓ 正确答案 D 过度抽象是重构的必然结果
# 3. 重构的"对比基线"(baseline comparison)中重构前后的客观对比 A 重构前无需记录任何状态 B 重构前记录可度量指标作为基线,重构后对比以验证行为不变并量化质量提升 ✓ 正确答案 C 基线只用于对比代码行数 D 对比基线无法验证行为是否一致
# 4. 重构的"成本边界"(cost boundary)中何时投入产出比失衡 A 重构只需看成本,不看收益 B 任何重构的收益都必然大于成本 C 当重构投入超过其未来收益时即失衡,应停止并把代码记录为技术债 ✓ 正确答案 D 成本边界与变更频率无关
# 5. 重构的"收益验证"(benefit verification)中度量改善的实际效果 A 用可度量的指标(复杂度、缺陷率、性能、交付周期)对比基线,短期验行为、长期验趋势 ✓ 正确答案 B 重构效果只能靠主观感受判断 C 收益验证只需看代码行数增加 D 收益验证与业务指标无关
# 6. 重构的"过度抽象"(over-abstraction)的反模式诊断 A 抽象越多越好,代表设计水平高 B 过度抽象不影响可维护性 C 一个接口只有一个实现、只为将来扩展而建的抽象是过度抽象信号,应内联或删除 ✓ 正确答案 D 过度抽象只能通过重写解决
# 7. 重构(Refactoring, Fowler)的"两顶帽子"(Two Hats)中新增功能 vs 重构的边界 A 同一时刻只戴一顶帽子:要么只加功能不改变结构,要么只重构不改变行为 ✓ 正确答案 B 添加功能与重构可以在同一操作中同时进行 C 两顶帽子指重构的两种不同风格 D 两顶帽子与测试无关
# 8. Replace Conditional with Polymorphism 的适用条件中基于类型分支的行为分发重构为多态 A 任何 switch 都必须改为多态 B 多态化会降低代码可扩展性 C 多态只适用于数值类型 D 当分支基于类型且行为各异、会随新类型反复扩展时,用子类多态替代分支 ✓ 正确答案
# 9. Branch by Abstraction 在跨多团队同时重构时的协调 A 是创建长期 git 分支的重构方式 B 只能单人使用 C 通过引入抽象接口并行新旧实现、逐步切换,适合跨团队渐进重构,避免大爆炸 ✓ 正确答案 D 无需契约测试
# 10. 重构的"小步重构"(small steps)中每个 commit 一个独立重构 A 大重构应一次性提交,避免麻烦 B 每个 commit 只包含一个独立的、可编译可测试的小重构,便于回滚与定位问题 ✓ 正确答案 C 小步重构会降低代码质量 D 小步重构无法与测试结合
# 11. 重构的"测试先行"(test-first)中 characterization test 覆盖遗留代码 A 它测试期望的正确行为,而非现状 B 特征测试无法检测行为变化 C 特征测试只能用于新代码 D 它记录并固定遗留代码的当前实际行为,作为重构后行为一致的基线 ✓ 正确答案
# 12. 重构的"红绿重构循环"(red-green-refactor cycle)中 TDD 的第三步 A 正确顺序是重构、红、绿 B 重构是 TDD 第三步,在测试全绿的前提下改善结构而不改变行为 ✓ 正确答案 C 红绿重构循环中不需要测试 D 重构会改变行为,属于正常现象
# 13. 重构的"代码量变化"(LOC delta)中净增减的客观统计 A 行数减少必然代表重构成功 B LOC delta 是客观的代码量净变化,但需结合复杂度等其他指标一起解读 ✓ 正确答案 C 行数增加必然代表重构失败 D LOC delta 只能通过人工估算
# 14. 重构的"复杂度变化"(complexity delta)中圈复杂度的下降 A 圈复杂度反映独立路径数,重构后下降说明分支逻辑被简化、可维护性提升 ✓ 正确答案 B 圈复杂度越高表示代码越简单 C 圈复杂度无法自动计算 D 复杂度变化与重构无关
# 15. Strangler Fig Pattern(绞杀者模式)在大型遗留系统渐进重构中的应用 A 要求一次性整体重写系统 B 绞杀者模式无法回滚 C 绞杀者模式只适用于新系统 D 用新系统逐步替换旧系统功能,通过路由渐进迁移,避免大爆炸风险 ✓ 正确答案
# 16. 重构识别与重构决策中哪些 smell 应立即修(rework)、哪些应记录债(debt)、哪些可接受(accepted) A 所有坏味道都必须立即修复 B 处置决策与变更频率无关 C 所有坏味道都记录为债即可 D 高频、低成本、低风险的立即修;未来会遭遇的记债;稳定无影响的接受 ✓ 正确答案
# 17. 重构的"性能变化"(performance delta)中 P99 不退化 A 重构只需关注功能,不需要关注性能 B 平均延迟比 P99 更能反映用户体验 C 通过基准测试对比重构前后 P99 尾延迟,要求不退化以保护用户可感知的尾部性能 ✓ 正确答案 D 性能变化无法度量
# 18. 重构的"覆盖率变化"(coverage delta)中测试覆盖的提升 A 重构会必然降低覆盖率 B 覆盖率与重构安全无关 C 重构应带来覆盖率提升,厚实安全网,形成重构与可测性的良性循环 ✓ 正确答案 D 覆盖率只统计行覆盖,无需看分支