12、Lazy Class – 冗赘类
对于几乎没有用的类,运用inline class 将其功能移动。去除这些不值得维护的类。
13、Speculative Generality – 夸夸其谈未来性
    对于你现在用不到,觉得总有一天会用到的代码,要警惕。用不上的装置总会挡我们的路,所以要尽量搬开。例如,没有太大作用的abstract class,非必要的委托,没有用到的函数参数,或者是函数的名称带有多余的抽像的意味。
14、Temporary Field – 令人迷惑的暂时值域
如果某些变量只是为了某种特定情况而设的,常会让人不理解
15、Message Chains – 过度耦合的消息链
    你常会看到用户向一个对象请求另一个对象,然后再向后者请求另一对像,然后再继续…形成了一个强耦合的消息链。一旦对像间的关系发生任何变化,客户不得不做出大量修改。
16、Middle Man –中间转手人
Encapsulation – 封装,对外部世界隐藏内部细节。封装常常伴随delegation(委托),但如果被过度使用,就必须得重新考虑。如果你看到某个class中有一半的函数都委托给其它class,这时就是强烈地信号。
17、Inappropriate Intimacy – 狎昵关系
二个类之间的关系联系太过紧密,造成强耦合。一般来讲,继承往往会造成这样结果,因为subclass对superclass的了解总是超过superclass的主观愿望。
18、Alternative Classed with Different Interfaces? -- 异曲同工的类
二个函数做同样的事,却有着不同的名字。你该知道怎么处理了吧。
19、Incomplete Library Class – 不完美的程序库类
我们在运用程序类库的时候,发现它并不是真正适合需要。
20、Data Class 纯稚的数据类
找到Data Class 中可能存在的public的值域,如果它的fields中存在容器类,就要小心地检查是不是得到了有效的封装。
21、Refused Bequest – 被拒绝的遗赠
Subclasses 应该继承superclass的函数和数据,但是如果subclass并不需要superclass的中某些功能,该怎么办呢。
22、Comments – 过多的注释

这里讲并不是你不应当写注释,而是说,如果一段代码有着长长的注释,实际上说明这段代码是不容易看懂的,如果到处都需要大段的注释,那整体程序的可读性就大大困难;如果你一定需要一段注释来说明,那么先试着重构,把可提出去Method 找出来,如果这之后仍然需要注释来解释其行为,那就要试着Rename,使其拥有有一个能说明其行为的类名或方法名,程序可读性会大大增强

本文转自   wenyan  51CTO博客,原文链接:http://blog.51cto.com/wenyan/9953

《重构-改善既有代码的设计》读书笔记(二)相关推荐

  1. 深入理解JVM读书笔记二: 垃圾收集器与内存分配策略

    3.2对象已死吗? 3.2.1 引用计数法 给对象添加一个引用计数器,每当有一个地方引用它的地方,计数器值+1:当引用失效,计数器值就减1;任何时候计数器为0,对象就不可能再被引用了. 它很难解决对象 ...

  2. 《Docker 技术入门与实践》-读书笔记二

    <Docker 技术入门与实践>-读书笔记一 <Docker 技术入门与实践>-读书笔记二 一.数据管理 用户在使用 Docker 的过程中,往往需要能查看容器内应用产生的数据 ...

  3. 《Introduction To Modern Cryptography》读书笔记二

    <Introduction To Modern Cryptography>读书笔记二 本笔记纯粹个人读书习惯与相应见解,内容归纳完全出于个人需要与个人局限,如有修改意见(比如哪儿应该是值得 ...

  4. oracle直查和call哪个更快,让oracle跑的更快1读书笔记二

    当前位置:我的异常网» 数据库 » <>读书笔记二 <>读书笔记二 www.myexceptions.net  网友分享于:2013-08-23  浏览:9次 <> ...

  5. 《How Tomcat Works》读书笔记(二)

    <How Tomcat Works>读书笔记(二) 这是<How Tomcat Works>第一二章的读书笔记.第一张主要写了一个静态资源处理的web服务器,第二章加了对ser ...

  6. 3D游戏设计读书笔记二

    3D游戏设计读书笔记二 一.简答题 • 解释 游戏对象(GameObjects) 和 资源(Assets)的区别与联系.   GameObjects是一个具体的实例,Assets是包括诸多游戏素材的资 ...

  7. 《李元芳履职记》读书笔记二 IT技术管理的沟通与团队建设

    <李元芳履职记>读书笔记二 接一 https://blog.csdn.net/qq_45937199/article/details/103305223 IT技术人员从技术岗走向管理岗,所 ...

  8. python图像处理《数字图像处理与python实现》读书笔记二:空间滤波

    文章目录 重要! 第三章 空间滤波 概览 3.1 空间滤波基础 3.1.1 空间滤波的机理 3.1.2 空间滤波器模板 3.2 平滑处理 3.2.1 平滑线性空间滤波器 3.2.2 统计排序滤波器 3 ...

  9. 第一行代码 Android读书笔记(二)

    第一行代码 Android读书笔记 第三章 软件也要拼脸蛋-UI开发的点点滴滴 常用控件的使用方法 详解4种基本布局 自定义控件 最常用和最难用的控件-ListView 更加强大的滚动控件-Recyc ...

  10. 《淘宝技术这十年》读书笔记 (二).Java时代的脱胎换骨和坚若磐石

    马云说过"一个好的东西往往是是说不清楚的",姑且不论这句话的对与错.但我真的很佩服<淘宝技术这十年>这本书的作者子柳,能够通过淘宝的一些故事,按照时间顺序和IT发展的各 ...

最新文章

  1. 重启nagios有异常提示Starting nagios:This account is currently not available
  2. 入职阿里啦!极客时间kotlin
  3. 介绍一种找bug的方法
  4. SilverLight是什么?(来自Csdn)
  5. 经典算法面试题目-翻转一个C风格的字符串(1.2)
  6. java虚拟机手动内存分配_《深入理解java虚拟机》-垃圾收集器与内存分配策略
  7. 从区块链中的通证模型设计看项目的未来
  8. 在Idea中拉取svn分支
  9. JAVA调起clearcase_Eclipse集成配置管理工具ClearCase (ccrc_for_eclipse)
  10. Python截屏工具,识别屏幕中的二维码
  11. 【Burp Suite实战指南】【定期更新】
  12. 笔记本显卡天梯图 2022
  13. docker安装后,并没有ln到/etc/systemd/system/multi-user.target.wants
  14. 使用电脑工具--Mydesk
  15. 做自媒体短视频,最简单的赚钱方法,就是做流量收益
  16. python两两组合_python – 一个列表中的两个组合列表
  17. python怎么左对齐_python中如何用ljust()实现字符串左对齐?
  18. 分享一个android手机开不了机的问题
  19. Tableau的特点和案例--可视化和交互化 和 其他
  20. 【Procmon教程1】Procmon介绍

热门文章

  1. MYSQL修改配置,允许远程访问
  2. hdu 4608 I-number
  3. Win32 API消息函数:GetMessagePos
  4. SVO 半直接视觉里程计
  5. shell [] [[ ]] {}区别
  6. php内核探索方法与资源
  7. mysql常用语句集锦
  8. Centos5.6 VNC安装配置【无错版】
  9. Linux 汇编语言开发指南
  10. 在Eclipse中使用Maven构建Spring项目