cwctt 2008-5-30 14:57
代码重构
[color=red]代码重构简介[/color]
[color=blue]1.重构的定义[/color]
重构(名词):对软体内部结构的一种调整,目的是在不改变"软体之可察行為"前提下,提高其可理解性,降低其修改成本.
重构(动词):使用一系列重构準则(手法),在不改变"软体之可察行為"前提下,调整其结构.
两种定义都强调是在不改变"软体的外部行為"前提下,不改变"软体之可察行為"就是说让修改不影响外部使用程式(程式师),在个外部来看,程式的行為和结果没有任何的变化.重构只是对程式内部结构进行调整,让代码更加容易理解,然后更容易维护.
[color=blue]2.重构的好处[/color]
能改进软体设计
使软体更容易被理解
能帮你找到bug
提高软体的开发速度
[color=blue]3.什麼时候进行重构[/color]
三次法则:事不过三,三则重构.意思是说,一件事情,第一次只管去做,第二次做类似的事情会產生反感,但无论如何还是做了,第三次再做类似的事情,你就应该重构.
在添加新功能时进行重构.
在修改bug时进行重构
在代码复审时进行重构.
[color=blue]4.為什麼重构有用[/color]
难以修改的程式具有以下特徵:
难以阅读的程式,难以修改
逻辑重复的程式,难以修改
添加新行為时需要修改现有的代码,难以修改
带复杂条件逻辑的程式,难以修改
好的程式应该是:
容易阅读
所有逻辑都只在惟一地点指定
新的改动不会危及现有的行為
尽可能简单的表达条件逻辑
[color=blue]5.间接层和重构[/color]
间接层的存在的价值:
允许逻辑共用
分开解释意图和实现
将变化加以隔离
将条件逻辑加以编码
但是过多的间接层会导致代码的层次太深,使代码难以阅读.因此要权衡加入间接层的利弊.
[color=blue]6.重构的难题[/color]
关联资料库与面向物件编程的问题:在物件模型和资料库模型之间插入一个分隔层,这就可以隔离两个模型各自的变化.升级某一模型时无需同时升级上述的分隔层即可.这样的分隔层会增加系统复杂度.但是能增加灵活度.
修改介面的问题:修改已发佈的介面,因為已发佈的介面会供外部人员(其他公司)使用,因此,修改介面会导致引用介面的其他程式不修改程式就无法运行.修改介面的最好的办法是增加一个新的介面,让旧介面调用新介面.这样原来的程式就不用修改了.对於介面的另一个建议是儘量不要发佈介面.
[color=blue]7.什麼时候不进行重构[/color]
现有的程式无法运行,此时应该是重写程式,而不是重构
程式到了最后的交付期限
[color=blue]8.重构与设计[/color]
重构与设计是互补的,程式应该是先设计,而在开始编码后,设计上的不足可以用重构来弥补.设计应该是适度的设计,而不必过度的设计.如果能很容易的通过重构来适应需求的变化,那麼就不必过度的设计,当需求改变时再重构代码.
[color=blue]9.重构与性能[/color]
提高性能的三种方法:
时间预算法:在设计时就对程式花费的时间进行预算,通常用於性能要求极高的即时系统.普通的企业应用程式一般对性能要求不高.只要不太慢就可以了.
持续关注法:要求程式师在任何时间都要设法保持系统的高性能.这个方法有个缺陷,就是大部分的程式90%的优化工作都是白费劲,这样会浪费大量的时间.
良好的分解方式:这个方式是在开发程式阶段不对性能投以任何关注,直到进入性能优化阶段,再分析程式中性能差的程式,然后对这些程式进分解,查出性能差的程式,进行优化.
[color=lime]转:[/color][url=http://hi.baidu.com/miaobing2008/blog/item/fb62d458cfaf2881800a1894.html][color=lime]http://hi.baidu.com/miaobing2008/blog/item/fb62d458cfaf2881800a1894.html[/color][/url]
[[i] 本帖最后由 cwctt 于 2008-5-30 14:59 编辑 [/i]]
王懿 2008-5-31 10:13
[quote]原帖由 [i]blastar[/i] 于 2008-5-31 09:56 发表 [url=http://www.stubc.com/redirect.php?goto=findpost&pid=5708&ptid=1413][img]http://www.stubc.com/images/common/back.gif[/img][/url]
台湾人都稀饭 “软体”“程式” :001 [/quote]
何以了解台湾人?莫非你是?
王懿 2008-5-31 10:23
哦,原来你喜欢繁体字啊。
你去投票吧。在置顶上面有个:调查。
blastar 2008-5-31 10:43
不喜欢繁体字 经常看的眼花缭乱 而且里面很多词语非常怪异__a19
什么调查?那个什么地区的?
论坛直接从经常访问的IP里面整理出来数据,就得了__a21
cwctt 2008-5-31 13:40
我的已经经过 翻译了~有的个别没翻译成功我也没办法
王懿 2008-5-31 15:59
是啊,网页上有自动翻译。
不叫翻译,应该叫转换。
是同一种语言啊。
王懿 2008-5-31 16:02
[quote]原帖由 [i]blastar[/i] 于 2008-5-31 10:43 发表 [url=http://www.stubc.com/redirect.php?goto=findpost&pid=5729&ptid=1413][img]http://www.stubc.com/images/common/back.gif[/img][/url]
论坛直接从经常访问的IP里面整理出来数据,就得了__a21 [/quote]
其他访问用户看不到啊。
blastar 2008-6-1 13:15
把统计结果发上来就是啦。。这样投票的貌似不准哦,很多人上但是并去投票的__a3