`
luowei31
  • 浏览: 79930 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

读书笔记之何时重构(上)

阅读更多

 

1、重复代码(Duplicated Code):一个以上的地方看到相同的程序结构,那么当可肯定:设法将他们合而为一,程序会变得更好;

 

2、过长函数(Long Method):一个较长的函数应该要设法将其拆成数个小的函数,越长的程序将让人越难以理解;

 

3、过大类(Large Class):过大的类中往往有太多的实例变量和重复代码,你要做的就是提炼它们,消除重复代码和过长的函数,尝试将5100行代码的函数提炼成510行的函数和102行的函数,必要的话根据客户的使用方式提炼出接口,这可以帮助你看清楚如何分解这个类;

 

4、过长参数列(Long Parameter List):太长的函数参数列会让人无法理解和难以使用,必要时可以将所需的大量参数制造成一个参数对象;

 

5、发散式变化(Divergent Change):如果某个类经常性因为不同的原因在不同的方向上发生变化就叫发散式变化,比如新加入一个数据库我需要修改类中的3个函数,新加入一个工具我需要修改类中的4个函数,那么你应该将这个类拆成两个,一个处理数据库,一个处理工具,那么每个类只会因为一个方向的变化而产生变化;

 

6、散弹式修改(Shotgun Surgery):与发散式变化相反,如果你修改一处代码会导致许多不同的类也需要相应的修改,那么你应该要考虑是不是移动那些类,将其放进同一个类中了;

 

7、依恋情节(Feature Envy):如果一个函数对某个类的兴趣高过对自己所属类的兴趣,例如某函数为了计算某值调用了另一个类中的半打取值函数(getting method),那么你应该考虑是不是把这个函数直接移动至另一个类中了;

 

8、数据泥团(Data Clumps):你经常可以看见有多个不同的类中存在着相同的值域,找出这些值域的出现点,提炼到一个新的独立对象中去,这样可以缩短参数列简化函数的调用动作。

 

9、基本型别偏执(Primitive Obsession):将基本的数据按照对象的防止建立对应的类来存放它们,类似于结合数值和币别的money classes,含一个起始值和一个结束值的range classes,电话号码或邮政编码等等的特殊Stings。你可以将原本单独存在的数据值替换为对象,从而走进对象的世界。后面将会详细介绍有效的处理方法。

 

10switch惊悚现身(Switch Statements):大多数时候都尽量不要使用switch,一看到它你就应该考虑以多态来替换它,这样可以让你的代码更加优雅。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics