现在的位置: 首页 > 综合 > 正文

重构–概念和坏味道[自己的理解]

2012年11月11日 ⁄ 综合 ⁄ 共 1606字 ⁄ 字号 评论关闭
在软件开发中项目失败是很正常的,大部分的项目都在延期的边缘,但是为什么会造成这样的结果呢?
我们有很强的工程师,对项目管理也很完善,为什么还会造成这样的结果呢?
为什么项目做到了一定的程度,客户只要求一个小的修改我们都会带出来一大堆的问题呢?
一切的问题都在于你检查过你写的代码了吗?你对你的代码重构了吗?

最近翻开我的一本老书,这本书已经在我的书架上睡了快两年了,当时买的时候看了部分开头,学了一小部分
最近开始真的带项目的时候使用了上面说的一部分方法后,才发现这本书真的很好,又一次翻开了.
从这篇文章开始,我会把我学到的,并且在项目中已经应用的重构方法写出来.

什么是重构?
重构就是当程序写完后,进行的一种代码整理的过程.重构实际上是一种在代码写好之后改进它的设计.
奇怪了为什么不先设计好了再开发呢?我第一次看到重构的时候就有这种想法.最后得出的答案是,不管你
的代码经验和水平有多高,你没有办法再一开始就把项目设计的很完美.

在我这个项目开始的时候,代码写的很肮脏,错误的命名,多次的复制粘贴代码,高度的耦合,修改一个地方
牵扯一堆地方.如果开始有好的设计,那么这些问题都不会发生.那么现在放下你手头的事情对你的程序
进行重构吧.下面就开始正式的介绍重构的方法.

在开始之前大家要明确这样的一个词,代码的坏味道.那些代码是有坏味道的呢?
(1)重复的代码.
    如果你在一个以上的地点看到相同的程序结构,那么可以肯定:设法将他们合二为一.
(2)过长的函数.
    越短的函数会存活的时间更长,存活的更好.
(3)过长的类.
    如果想利用单一的类做很多的事情,那么该类的内部会出现很多的instance变量,重复代码就要接踵而至了.
(4)过长的参数列.
    太长的参数列难以理解,太多的参数会造成前后不一致,不易使用,一旦你需要更多的数据,就不得不修改它.
(5)发散式变化.
    一旦我修改软件,我希望只在一处修改就好,如果不能做到这点,该坏味道就出现了.\
(6)烟雾弹式修改.
    一旦软件进行修改,你必须去对多个类的内部做小修改,该坏味道出现了.
(7)依恋情结.
    函数对某个类的兴趣高过对自己所处之host类的兴趣,坏味道出现了.`
(8)数据泥团.
    两个类中的相同值域,多个函数中的相同参数,该坏味道出现了.
(9)基本类别偏执.
    如果一个类只为了做一两件事而创建,却付出了太大的额外开销,该坏味道出现了.
(10)switch惊悚现身.
    尽量少用switch语句,因为switch语句的问题在于重复.
(11)平行继承体系.
    如果你发现某个继承体系的类名称前缀和另一个继承的类名称前缀完全相同,坏味道出现了.
(12)冗赘类.
    如果一个类的所得不值其身价,消失吧.
(13)夸夸其谈未来性.
(14)令人迷糊的暂时值域.
    某个instance变量仅为某种特定情况而设置.
(15)过度耦合的消息链.
(16)中间转手人.
    讨厌的封装,对外部世界隐藏其内容.
(17)狎昵关系.
    两个类过于亲密,花费太多的时间去探究彼此的似有成分.
(18)异曲同工的类.
    如果两个方法做同一件事,却有不同的名字.
(19)不完美的程序类库.
(20)纯稚的数据类.
    该类的特性是,拥有一些值域,一级用于访问这些值域的函数,其他的一无所有.
(21)被拒绝的遗赠.
    子类应该继继承父类的方法和数据,但是父类都写成似有的,不希望子类继承,坏味道出现了.
(22)过多的注释.
    你发现一个类有很多的注释,是因为这个类很烂,那么这里的注释就是坏味道了.

    ok所有的坏味道的条件都知道了,下篇文章开始介绍重构的方法.

转帖请注明
http://www.cnblogs.com/winnerzone/archive/2007/12/02/979763.html

                          
WINNERZONE

抱歉!评论已关闭.