您当前的位置: 首页 > 

Peter_Gao_

暂无认证

  • 0浏览

    0关注

    621博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

《重构,改善既有代码》读书笔记

Peter_Gao_ 发布时间:2020-12-11 08:32:43 ,浏览量:0

一、为何要重构

1、重构让代码更易阅读和理解。

2、重构改进软件设计

我个人认为,上述两点完全可以是重构的动力。

二、什么情况需要重构

1.重复代码

2.过长函数

3.过大的类

4.过长参数列

5.违反单一职责原则(即有多个理由去修改一个类)

6.散弹式修改(如果每遇到某种变化,你都必须在许多不同的类做出许多小修改,就应该考虑提到一个类中)

7.数据泥团(如果在很多地方看到相同的三四项数据:两个类中相同的字段、许多函数中相同的参数。就可以把他们提到单独类中)。

8.switch惊悚现身(看见switch可用多态来替换)

9.令人疑惑的临时变量(一般复杂算法中会出现不止一个的临时变量,就会产生这样的问题,书中建议提到一个单独类中去)

三、重构手法

以函数对象取代函数(Replace Method with Method Object)

场景:你有一个大型函数,其中局部变量的使用让你无法采用Extract Method。

用法:将这个函数放进一个单独的对象中,如此一来局部变量就变成了对象内部的字段。然后你可以在类里面将大型函数分解为多个小型函数。

例子:

 
  1. Class Order{

  2. double price(String parm){

  3. double primaryBasePrice;

  4. double basePrice;

  5. double price;

  6. .... //other code

  7. this.mthod();

  8. }

  9. }

我们可以给他转换成以下的样子:

 
  1. Class Order{

  2. double price(String param,Order sourceOrder){

  3. return new PriceHandle(param,sourceOrder).compute();

  4. }

  5.  
  6. }

  7.  
  8. Class PriceHandle{

  9. double primaryBasePrice;

  10. double basePrice;

  11. double price;

  12. String param;

  13. Order order;

  14.  
  15. public PriceHandle(String param,Order sourceOrder){

  16. this.param=param;

  17. this.order=sourceOrder;

  18. }

  19.  
  20.  
  21. public double compute(){

  22. otherMethod();

  23. .... //code1

  24. return order.method();

  25. }

  26.  
  27. public void otherMethod(){

  28. .... //code2

  29. }

  30. }

文中重点摘要:

替换算法(Subsittue Algorithm)

 
  1. String checkPerson(String[] people){

  2. for(int i=0;i

关注
打赏
1664521772
查看更多评论
0.0419s