用途
该技能面向代码重构场景,提供在不改变代码行为的前提下改善代码质量的模式与技巧。可用于清理遗留代码、降低复杂度、提升可读性,以及在添加新功能前先让改动变得更容易。
主要能力
重构原则
何时重构:
- 添加新功能之前(先让改动容易,再做容易的改动)
- 测试通过之后(红-绿-重构)
- 发现代码坏味道时
- 处理代码评审反馈时
何时不应重构:
- 代码没有测试覆盖时
- 工期紧张且没有安全网时
- 代码很快会被替换时
- 不理解代码在做什么时
常见代码坏味道
- 过长方法:一个方法承担过多职责,应提取为职责聚焦的多个方法。
- 深层嵌套条件:层层嵌套的“箭头代码”,可用提前返回(卫语句)改写。
- 基本类型偏执:到处使用基本类型,可引入值对象(如 Email 类)封装校验。
- 依恋情结:某方法大量使用另一个对象的数据,应把方法移动到数据所在之处。
重构手法
- 提取方法:识别只做一件事的代码块,移动到命名清晰的新方法,原处改为调用。
- 以多态替换条件:把基于类型的 switch 改为多态类实现。
- 引入参数对象:参数过多时,用参数对象聚合相关参数。
- 用常量替换魔法数字:把散落的数字提取为具名常量。
安全重构流程
- 确保存在测试——没有就补写测试
- 小步修改——一次只做一项重构
- 每次改动后运行测试——立即捕获回归
- 频繁提交——出问题时便于回滚
- 审查差异——确认行为未改变
重构检查清单
- 开始前测试通过
- 每次改动小而聚焦
- 每次改动后测试通过
- 无行为变化(仅结构变化)
- 代码比之前更易读
- 提交信息说明本次重构内容
使用方式
资料未提供该技能的具体安装命令、调用方式或集成步骤,暂未提供。
适用场景
- 清理遗留代码
- 降低代码复杂度
- 提升代码可读性
- 在添加新功能前进行准备性重构
- 处理代码评审中提出的结构改进意见
限制
- 缺少测试覆盖时不应重构
- 工期紧张且无安全网时不应重构
- 即将被替换的代码不应重构
- 不理解代码行为时不应重构
- 资料未提供关于收费、价格、支持平台或实际效果的信息,暂未提供。