王朝百科
分享
 
 
 

重构

王朝百科·作者佚名  2009-11-13  
宽屏版  字体: |||超大  

重构的定义

重构(名词):对软件内部结构的一种调整,目的是在不改变"软件之可察行为"前提下,提高其可理解性,降低其修改成本.

重构(动词):使用一系列重构准则(手法),在不改变"软件之可察行为"前提下,调整其结构.

两种定义都强调是在不改变"软件的外部行为"前提下,不改变"软件之可察行为"就是说让修改不影响外部使用程序(程序员),在个外部来看,程序的行为和结果没有任何的变化.重构只是对程序内部结构进行调整,让代码更加容易理解,然后更容易维护.

重构的好处

能改进软件设计使软件更容易被理解

能帮你找到bug

提高软件的开发速度

什么时候进行重构

三次法则:事不过三,三则重构.意思是说,一件事情,第一次只管去做,第二次做类似的事情会产生反感,但无论如何还是做了,第三次再做类似的事情,你就应该重构.

在添加新功能时进行重构.

在修改bug时进行重构

在代码复审时进行重构.

为什么重构有用

难以修改的程序具有以下特征:

难以阅读的程序,难以修改

逻辑重复的程序,难以修改

添加新行为时需要修改现有的代码,难以修改

带复杂条件逻辑的程序,难以修改

好的程序应该是:

容易阅读

所有逻辑都只在惟一地点指定

新的改动不会危及现有的行为

尽可能简单的表达条件逻辑

间接层和重构

间接层的存在的价值:允许逻辑共享;分开解释意图和实现;将变化加以隔离;将条伯逻辑加以编码

但是过多的间接层会导致代码的层次太深,使代码难以阅读.因些要权衡加入间接层的利弊.

重构的难题

关系数据库与面向对象编程的问题——在对象模型和数据库模型之间插入一个分隔层,这就可以隔离两个模型各自的变化.升级某一模型时无需同时升级上述的分隔层即可.这样的分隔层会增加系统复杂度.但是能增加灵活度.

修改接口的问题——修改已发布的接口,因为已发布的接口会供外部人员(其它公司)使用,因此,修改接口会导致引用接口的其它程序不修改程序就无法运行.修改接口的最好的办法是增加一个新的接口,让旧接口调用新接口.这样原来的程序就不用修改了.对于接口的另一个建议是心尽量不要发布接口.

什么时候不进行重构

现有的程序无法运行,此时应该是重写程序,而不是重构程序

到了最后的交付期限

重构与设计

重构与设计是互补的,程序应该是先设计,而在开始编码后,设计上的不足可以用重构来弥补.设计应该是适度的设计,而不必过度的设计.如果能很容易的通过重构来适应需求的变化,那么就不必过度的设计,当需求改变时再重构代码.

重构与性能

提高性能的三种方法:

时间预算法——在设计时就对程序花费的时间进行预算,通常用于性能要求极高的实时系统.普通的企业应用程序一般对性能要求不高.只要不太慢就可以了.

持续关注法——要求程序员在任何时间都要设法保持系统的高性能.这个方法有个缺陷,就是大部分的程序90%的优化工作都是白费劲,这样会浪费大量的时间.

良好的分解方式——这个方式是在开发程序阶段不对性能投以任何关注,直到进入性能优化阶段,再分析程序中性能差的程序,然后对这些程序进分解,查出性能差的程序,进行优化

图书《重构》

重构

作者: 张锋强 著

出 版 社:中国纺织出版社

出版时间: 2009-5-1

字数: 181000

页数: 217

开本: 16开

I S B N : 9787506451116

定价:36.00

编辑推荐:社会进步需要不同的危机推动,金融危机不过是全球化进程的第一场洗礼!

经济的全球化步伐超越了政治和心态的全球化,金融危机不过是对此加以均衡!

金融危机让世人财富观念重新回归效率之上,不再追逐泡沫中的财富效应!

全球经济的严重失衡源于维系国际间的全球资源配置链条的结构异化!

内容简介:全球化是新时代的经济生态,是全球配置资源,它是通过一条条优势互补、共生共荣的价值链交织起来的经济模型。这一模型不仅预示了经济体及微观经济单元面临的市场更博大,面临的问题更复杂多维,也预示将来面临的危机规模更大、更不可驾驭。

全球化的生命力在于它是“一个能让所有人受益的经济体系”。人们要问,如果不能通过协商去完成全球秩序的建设和游戏规则的确立,结果又会怎么样呢?那就一定会通过一场场摧枯拉朽的全球经济风暴来实现这一切。

全球经济失衡由来已久,积淀下来的矛盾正在激化。全球经济的严重失衡源于维系国际经济关系全球配置资源链条的特殊结构,这一特征正如美联储原主席格林斯潘所说的“新兴市场的生产要素和发达国家的消费市场相结合”。然而,一轮周期性调整让国际大循环的价值链条险象环生,虚拟经济极度膨胀,加上资本的天生逐利性,侵蚀着全球实体经济,已经让全球的经济风雨飘摇。

“从明而感、由感而得、得而致用”是此书的基本追求。希望能让理论探索者在学术之途有夜行得灯之惊喜;让经济管理者在经营管理获吹糠见米之感悟。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有