# 1. Long Method(过长函数)的危害与 Extract Method 的拆分判据中以"意图"而非"行数"切分 A 只要方法超过 30 行就必须拆分 B 只要方法带注释就必须拆分 C 以"是否能用有意义的名字描述一段代码的意图"作为切分依据,行数只是参考信号 ✓ 正确答案 D 拆的越细越好,每个方法都应只有一行
# 2. God Class(上帝类)的识别(过多职责、过多字段、过高变更频率)与 Extract Class 的分解 A 上帝类的核心特征是职责过多、字段过多、变更频繁且被大量依赖 ✓ 正确答案 B 上帝类只通过字段数量即可识别,与职责无关 C 上帝类是正常现象,无需处理 D 上帝类只能通过重写整个类来修复
# 3. Feature Envy(依恋情结)中方法大量使用另一类的数据,信号指向 Move Method A 方法是私有的就说明存在 Feature Envy B 只要方法被调用次数多就存在 Feature Envy C 方法大量使用另一类的数据或方法、对本类数据依赖很少,应使用 Move Method 移到数据所属类 ✓ 正确答案 D Feature Envy 是安全的,无需重构
# 4. Shotgun Surgery(霰弹式修改)中一处需求变更需改动散落多处的代码,指向职责聚合 A 指一个类因多种不同原因而频繁变更 B 与发散式变化完全相同 C 指一处需求变更需要散落修改多处代码,应通过职责聚合解决 ✓ 正确答案 D 无需处理,属于正常耦合
# 5. Divergent Change(发散式变化)与 Parallel Inheritance Hierarchies(平行继承体系)的识别与化解 A 指一个类因多个不同原因变更 B 平行继承体系不可化解 C 指所有类都继承自同一个父类 D 指给某类添加子类时必须同时为另一个类添加子类,两套层次被强制绑定 ✓ 正确答案
# 6. Introduce Parameter Object 与 Preserve Whole Object 的取舍中参数列表过长 vs 传递整个对象 A 方法只需对象个别字段时,传整个对象会引入过宽依赖,应优先传字段或参数对象 ✓ 正确答案 B 只要方法需要对象的任何字段,就应传整个对象 C Preserve Whole Object 与 Introduce Parameter Object 完全相同 D 参数列表过长时唯一可选方案就是传整个对象
# 7. 坏味道的组合诊断中上帝类、过长方法与依恋情结共现时如何识别根因并整体重构,而非逐点修补? A 每个坏味道都应独立修补,与其它无关 B 坏味道之间没有关联 C 出现多个坏味道说明系统无法挽救,只能重写 D 上帝类、过长方法与依恋情结常指向同一职责归属根因,应整体重构而非逐点修补 ✓ 正确答案
# 8. Move Method / Move Field 的职责再分配判断中依据"谁用得最多" A 以"谁用得最多"并结合数据归属为依据,让方法靠近其操作的数据 ✓ 正确答案 B 移动到调用次数最少的类 C 只能移动到父类 D 移动不会改变任何依赖关系
# 9. Inline Method / Inline Class(内联)作为过度抽象的反向重构手段 A 它们是 Extract Method / Extract Class 的逆操作,用于消除过度抽象造成的冗余间接层 ✓ 正确答案 B 它们会增加间接层 C 它们只适用于私有方法 D 内联后会降低可读性,应避免使用
# 10. Replace Magic Number with Symbolic Constant 与 Replace Type Code with Subclasses 的应用 A 用命名常量替代所有类型编码 B 只适用于数字类型编码 C 当类型编码决定行为分支时,把每个类型替换为子类并用多态替代分支 ✓ 正确答案 D 会降低代码的灵活性
# 11. Data Clumps(数据泥团)的识别与封装为值对象 A 指单个字段过大的数据 B 指一组数据总是结伴出现,应封装为值对象 ✓ 正确答案 C 数据泥团无需处理 D 数据泥团只能通过拆分数据库解决
# 12. Refused Bequest(被拒绝的遗赠)中子类不用父类成员,暗示继承误用,应以组合替代 A 子类完美使用了父类所有成员 B 只能通过删除父类解决 C 这是继承的最佳实践 D 子类不用父类大部分成员,暗示继承被误用,应以组合替代继承 ✓ 正确答案
# 13. "魔法数字"与"魔法字符串"的治理边界中何时抽常量,何时引入配置? A 所有魔法值都应抽成常量 B 常量与配置没有区别 C 所有魔法值都应放入配置文件 D 含义固定、极少变的用常量,随环境/业务变化需外部调整的用配置 ✓ 正确答案
# 14. 重复代码(Clone)的四种类型(Type-1 精确复制、Type-2 重命名/参数化、Type-3 近似、Type-4 语义级)各自如何检测与消除? A Type-1 是精确复制可文本比对检测,Type-4 是语义级重复最依赖于人工评审 ✓ 正确答案 B Type-1 需要人工识别,Type-4 可用文本工具一键检测 C 四种类型都可用同一工具检测 D 语义级重复是四种中最容易消除的
# 15. 坏味道检测的自动化边界中哪些可工具化、哪些依赖人工评审,两者如何分工配合? A 可量化的结构特征可工具化,涉及语义与设计意图的依赖人工评审 ✓ 正确答案 B 所有坏味道都能完全自动化检测 C 人工评审完全可以被工具取代 D 自动化工具只能检测重复代码
# 16. 坏味道与"何时不重构"的权衡,稳定且低变更频率的代码可容忍坏味道 A 任何坏味道都必须立即重构 B 稳定代码重构成本为零 C 重构只取决于代码行数 D 稳定且低变更频率的代码可容忍坏味道,重构应服务于未来会变化的代码 ✓ 正确答案
# 17. 如何用 AI 工具批量识别坏味道,同时防止误报淹没人工评审? A AI 报告无需人工复核,完全可靠 B AI 只能识别重复代码 C AI 扩大了候选集,但需通过置信度排序、抽样复核与反馈闭环控制误报淹没人工评审 ✓ 正确答案 D 误报不会影响评审效率
# 18. 坏味道治理的优先级中高变更频率区域的坏味道为何优先处理,如何用变更热点定位? A 所有坏味道治理优先级相同 B 高变更频率区域的坏味道改动成本最高,应优先治理,可用变更热点分析定位 ✓ 正确答案 C 应优先治理低频区域的坏味道 D 变更热点与代码结构无关