重构---让今天更有价值,让明天更美好

来源:互联网 发布:javascript框架 编辑:程序博客网 时间:2024/04/30 01:04

一、三次法原则

第一次去做某件事时尽管去做;第二次做类似的事会产生反感;第三次再做类似的事,你就应该重构。

事不过三,三则重构


二、重构时机

任何情况下都要极力反对专门拨出时间进行重构,重构应该随时随地的进行;重构的原因是你想做别的事,而重构可以帮助你把哪些事情做好。

1.添加功能时重构(设计原则:对扩展开放,多修改闭合)

重构能够帮助我们理解即将扩展的代码,对既有代码有清晰的认知,帮助我们准确快速实现新功能。
在现有代码设计对扩展支持较差的前提下,重构代码,会优化既有程序的设计,使扩展简单。


2.修补错误时重构

当收到错误报告时,这就是我们修要重构代码的信号,因为显然代码逻辑是不清楚的-----没有清楚到在一开始就能够规避错误。

重构优化代码设计,让代码更具可读性,维护更容易。


3.复审代码时重构

让更有经验的人帮助复审代码,提出设计的宝贵意见,重偶之后就会是代码设计更合理、更健壮。



三、重构程序原因

未重构的程序:

1.难以阅读的程序

2.逻辑重复的程序

3.扩展新功能需要修改已有代码和框架的程序

4.带复杂条件(if else/switch case)逻辑的程序


重构后的程序

1.容易阅读

2.所有逻辑都只在唯一地点指定

3.对修改关闭,对扩展开放。新需求的实现不会影响既有设计和行为

4.经可能简单的表达条件逻辑(多太消息,设计模式)



四、间接层和重构

间接层:在软件设计或者重构过程为了程序具有更好的架构而增加的托管层


间接层是一柄双刃剑,为了使程序架构对扩展开放,往往会增加较多的中间层,但是这样会导致程序愈加难以阅读,因此在设计和重构的时候,就要权衡利弊,去掉不必要的间接层,保存提高程序价值的间接层。


间接层的价值:

1.逻辑共享

比如说超类的函数被所有子类共享(间接层就是超类,管理子类)


2.分开解释意图和实现


3.隔离变化

可能我们在两个不同的地方使用同一对象,其中一个地方我想改变对象的行为,如果修改了它,我就要冒着同时影响两处的风险;

为此,我可以采用超类+子类的方式,让不同的子类对象具有不同的行为,并在需要的地方引用不同的子类对象,这样影响就缩小到了一处。


4.封装条件逻辑

对象有一种奇妙的机制:多态消息,可以灵活而清晰的表达条件逻辑。


五、重构行之有效的方法

1.在重构优化程序性能时,要有一个行之有效的度量工具,找出性能瓶颈点;记住任何事前的猜测都可能是错误的,Please show me the evidence。

2.将大块头软件重构为封装良好的小型组件。之后对各个组件重构或者重建。

3.先mvp(最小可行性产品),之后不断敏捷开发(重构和迭代)


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 百香果蜂蜜沉在下面怎么办 领导要潜我老婆怎么办 被领导潜了该怎么办 实习期单位领导开除我我该怎么办 泡泡袖显手臂肥怎么办 客人想吃霸王餐怎么办 在四楼上课时发生地震怎么办 学生在上课时发生地震怎么办 学生上课时发生地震怎么办 老板承诺的工资不兑现怎么办 只有本科毕业证没有学位证怎么办 孩子跟坏孩子玩怎么办 苕帚跟簸箕掉下来了怎么办 身体发烫又觉得冷怎么办 买苹果8后悔了怎么办 手机死机了怎么办不可拆卸电池 百度网盘密码忘了怎么办 空调冷凝水无法排出怎么办 转账时名字错了怎么办 打款名字错了怎么办 转账名字写错了怎么办 国际汇款汇错了怎么办 汇款英文写错了怎么办 体重秤不显示了怎么办 在ur试完衣服怎么办 汽车主机没有倒车检测线怎么办 合格考补考没过怎么办 合同一式两份双方都丢失怎么办 自控力差的人怎么办 孩子缺乏自控能力该怎么办 名片上换了号码怎么办 格力空调显示u8怎么办 格力空调出现u8怎么办 双肺多发斑点影怎么办 外文翻译没5000字怎么办 睡出永久睡痕怎么办 英语不好学学英文软件怎么办 遥控汽车只能原地打转怎么办 铝合金门上的胶带纸撕不掉怎么办 纸胶带撕不下来怎么办 拼多多卖不出去怎么办