ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

《重构》读书笔记

2021-03-06 16:01:43  阅读:187  来源: 互联网

标签:重构 函数 读书笔记 一个 提炼 参数 Method 变量


代码的坏味道

  • 当你感觉需要攥写注释的时候,请先尝试重构,试着让注释变得多余。
  • 重复代码(Duplicated Code)
同一个类的两个函数有相同的表达式   两个互为兄弟的子类内含相同的表达式 ==> 提解到超类中去   两个毫不相关的类出现重复代码 ==> 放到第三个类,用一个静态方法,或者放入其中一个类,另一个类调用它即可,看具体详情

 

  • 过长的函数(Long Method)
每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途(而非实现手法)来命名。   如果函数内有大量的参数和临时变量,他们会对你的函数提炼形成阻碍。传递临时变量给新函数,导致可读性是非常的差的。此时你可以 把临时变量放到子函数中去,最终需要的变量,return回来即可   条件表达式和循环也是提炼的信号。 都可以提炼到一个独立函数中,并且以良好的命名来说明用途

 

  • 过大的类 (Large Class)
如果单个类做的事情太多,类内有太多的代码,也是代码重复,混乱并最终走向死亡的源头。   按照职责拆分类。比如,先确定客户端如何使用他们,然后清除了解这个类,在进行分解

 

  • 过长的参数列 (Long Parameter List)
太长的参数会造成前后不一致,不易使用,而且难以理解   此时,你需要把过长的参数封装到一个对象中去,这样就十分的方便了   此对象一般叫做VO,或者xxxxRequest 看个人

 

重新组织函数

  • 提炼函数 (Extract Method)
如果一个函数非常的长,那么把其中逻辑一样的部分提炼出来。比如 一个简单的循环打印并且计算sum的函数   printTest(); int res = getRes();   但对于有临时变量的,这个是特别的注意。传参,还有返回值,这十分的谨慎琢磨。

 

  • 引用解释性变量 (Introduce Explaining Variable)
你可以用这项重构将每个条件子句提炼出来,以一个良好的命名的临时变量来解释对应条件子句的意义   总感觉可用可不用

 

  • 移除对参数的赋值 (Remove Assignments to Parameters)
代码对一个参数(传进一个函数的参数)赋值,是非常不友好的做法。   所以请以一个临时变量取代该参数的位置

 

  • 以函数对象取代函数 (Replace Method with Method Object)
如果一个函数之中局部变量泛滥成灾,那么想分解这个函数是非常困难的,有时你会发现根本无法拆解一个需要拆解的函数。这种情况,你就需要函数对象这件法宝了。   将这个函数变为对象,函数的局部变量变为函数对象的字段。在新类里面建立一个 compute 的函数,然后使用分解函数进行重构即可

 

重新组织数据

  • 以对象取代数据值 (Replace Data Value with Object)
比如:一开始你可能会用一个字符串来表示 “电话号码” 的概念,但是随后你就会发现,电话号码需要 “格式化”, “抽取区号” 之类的特殊行为。   对这个 “电话号码” 你有很多的操作,这是非常不友好的。   所以必要时,将 String phone ==> Phone phone 一个对象

 

 

 

标签:重构,函数,读书笔记,一个,提炼,参数,Method,变量
来源: https://www.cnblogs.com/wenbochang/p/14491042.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有