重构的5W1H(实践总结)

 
重构的5W1H(实践总结)
 
 
为什么需要重构(Why): 提高软件内部质量,了解系统。
1.      减少复杂度是唯一的判断标准。
2.      内部质量:程序员能够感受到的,比如:可维护、可读性、灵活行、可重用行、可测试性。
3.      比如可读性:准确说出你的意思,时刻记住代码被阅读和被修改的次数远远多余它被编写的次数。
 
 
什么是重构(What):
1.      定义:在不改变代码行为的前提下,对代码做出修改,以改进程序的内部质量,降低修改成本。
2.      描述:重构是一种有纪律的、经过训练的、有条不紊的程序调整方法,可以将整理过程中不小心引入错误的几率降到最低。
 
 
什么时候重构(When):
1.      开发阶段最好,成本最低。
2.      没有专门的时间重构,随时随地进行。
3.      事不过三,三则重构。
4.      在增加子程序时,关注其它子程序。
5.      添加类时,关注本类以及和其它类的关系。
6.      审查代码时,作者和审查员一起重构。
7.      修改bug时,是否有类似。
8.      关注高复杂、多bug模块。
9.      确保代码在离开你的时候比来之前更健康。
10.  当你感觉需要撰写注释时,请先尝试重构,试着让所有注释变得多余。
11.  定义清楚干净代码和拙劣代码的边界,然后尝试把代码移过这条边界。
12.  不合适的时候 
        A.      项目已近最后期限。
      B.      代码根本不能正常运行:需要重写。
 
 
Who
1.      作者
2.      其它开发人员
3.      作者和代码审查员
 
 
Where
随地
 
 
如何重构(How):
1.      嗅到“代码臭味”
A.      不要为拙劣的代码编写注释。
B.      程序中的一些代码为将来的某个时间才用。
a)      需求不明确。
b)      画蛇添足,增加了程序的复杂度,额外的测试和修改bug,拖项目的后腿。
c)      只需要关注现在的东西,交流层次。
d)      为以后准备的最好方法就是让代码清晰直白的表现现在的需求。
C.      参考《重构-改善即有代码的设计》
2.      掌握大量重构方法:参考《重构-改善即有代码的设计》
3.      安全重构策略
A.      风险驱动:列出主要的风险,提出相应的策略,根据重构风险级别来调整重构方法。
a)      自掘坟墓:挖掘自己的代码,很快发现了一些值得修改的地方,于是你挖得更深。挖得愈深,找到的重构机会就越多 ……
b)      维护阶段和开发阶段的策略是不一样的
B.      重构工具
a)      讲究速度、安全、Undo。
b)      简单、机械、重复的劳动用工具做。
C.      同一时间只做一项重构,重构的步伐请小些。
D.      把要做的事请一条条列出来,保持重构思路连贯,列表最好不要太长。
E.      设定目标,途中设置一个停车场,把在未来需要重构的内容,需要画的图……列出来,继续原有的目标。
F.      检查对代码的修改,特别是1至5行的代码修改(程序员比较轻视比较小的修改,常常不验证),同时验证修改。
G.      结对编程,代码审查。注意多交谈自己的意图
H.      阅读代码,Double Check,少依赖编译器,编译器只能查处简单的问题,可以利用编译器的警告信息处理简单的错误。
I.      分而治之,先分大模块(定义好大模块的接口)。
J.      学习原路返回,途中阶段性结果的Check In,写明注释。
K.      没把握时就停下来:无法证明自己所做的一切能够保持程序原意时。
L.      没有单元测试,测试周期长,必须要对业务比较了解。在重构结束后,Step by Step,走完整个流程。
 
 
Others
1.      重构中记录下其它需要重构的内容。确保记录下的需要重构的内容在两周内去修改。
2.      理想状况下:只有在有新的需求时才有重构。当前的代码应该是最适应当前的需求。
3.      不要把重构当做先写后改的代名词。避免用重构代替重写。
4.      一个心态:用自己全部所学去改进它
 
 
参考书籍
《重构-改善即有代码的设计》
《代码大全 2》
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值