程序员如何做「代码重构」:不是重写,是改进
重构是在不改变代码行为的前提下,改进代码结构。
不是为了炫技,是为了代码更易读、易改、不出错。
一、什么时候需要重构
1. 代码难以理解
注释写了半天还是看不懂。
变量名、函数名让人摸不着头脑。
2. 修改成本高
加一个功能要改很多地方。
改一个地方影响很多地方。
3. 重复代码多
同样的逻辑出现多次。
复制粘贴的时候就是信号。
4. 测试难写
代码耦合严重,难以单独测试。
二、重构的原则
1. 小步前进
每次只改一个小的地方,改完立即测试。
不要憋大招,一下改太多,难以排查问题。
2. 有测试保护
重构要有测试保护网。
没有测试的重构是冒险的。
3. 不改变行为
重构不改变代码的外部行为。
只是内部结构更合理。
4. 持续改进
不要等代码烂透了再重构。
每次改的时候顺手改进一点。
三、重构的手法
1. 提取函数
长函数拆成短函数。
每个函数只做一件事。
2. 变量重命名
a、temp、data → userList、orderAmount。
好名字能让代码自解释。
3. 消除重复
同样的逻辑只写一次。
提取公共函数、提取基类。
4. 简化条件
多层嵌套的条件简化。
卫语句、策略模式。
四、好用的重构技巧
1. 童子军规则
离开的时候比来的时候干净。
改一个文件顺手把格式、注释整理一下。
2. 渐进式重构
从最外层开始,逐步深入。
先改调用方,再改被调用方。
3. 对比验证
重构前后功能一致。
对比测试结果、日志输出。
五、常见错误
❌ 不测试就重构
"我确定这样改没问题"——不测试就有风险。
❌ 一步到位
想着一口气把所有问题都解决。
❌ 重构不做记录
改了什么、为什么改、有什么风险——要记录。
六、一句话总结
代码重构 = 小步前进 + 测试保护 + 不改行为 + 持续改进,核心是逐步改进代码结构。