重构---让今天更有价值,让明天更美好
来源:互联网 发布: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(最小可行性产品),之后不断敏捷开发(重构和迭代)
- 重构---让今天更有价值,让明天更美好
- 兼容,让生活更美好
- 科技让生活更美好
- Markdown:让书写更美好
- 让你的人生变得更有价值
- 保持安静,让自己变得更有价值
- 让时间用的更有价值
- 思考:如何让自己更有价值
- 城市怎么让生活更美好?
- 改变自己,让生活更美好
- 独立人格,让人生更美好
- 让容器的世界变得更美好
- 谷歌:科技让世界更美好
- 重构-让代码更清晰
- 只为明天更美好
- 为了更美好的明天
- 【机房个人重构】泛型--让3层更完美,让编程更高效
- 【思考1】如何让你的工作更有价值
- 获取手机的UUID
- Android - wheel 省市级联
- android如何获取权限
- Matlab 图像处理相关函数命令大全
- TIKA环境配置
- 重构---让今天更有价值,让明天更美好
- 每家至少备三种水龙头!水龙头使用扫盲贴
- 《netty权威指南》2.4 AIO编程
- Angular双向数据绑定简易实现
- 通过zigbee的osal层osal_mem_alloc()函数看malloc函数的基本过程
- oracle表分区
- Mapreduce的性能调优
- Android Studio使用小结
- Java类中方法重载