您的位置:首页 > 运维架构 > 网站架构

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

2015-04-29 15:18 330 查看
一、三次法原则

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

事不过三,三则重构

二、重构时机

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


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(最小可行性产品),之后不断敏捷开发(重构和迭代)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息