![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记
东晨雨
微信公众号:JAVA万维猿圈
展开
-
《代码整洁之道》总结与演绎(上)
程序员可以分为三个层次:普通程序员、工程师 、架构师有意义的命名1、名副其实(1)变量、函数或者类的名称应该已经答复了所有问题,应当说明了做什么事,应该怎么用(2)如果名称需要注释来补充,就不算名副其实。(3)以日期为例:应当指明计量对象和计量单位int d ------> int daysSinceCreation / int daysSinceModifica...原创 2019-05-04 22:56:15 · 223 阅读 · 0 评论 -
重构-改善既有代码的设计(十二):大型重构
1、梳理并分解继承体系(Tease Apart Inheritance)(1)症状:某个继承体系同时承担两项责任(2)解决:建立两个继承体系,并通过委托关系让其中一个可以调用另一个(3)混乱的继承体系是一个严重的问题,会导致重复代码(4)将代码较多的职责留在原地,这样一来需要搬移的代码数量就会比较少(5)如果继承体系中的某一特定层级上的所有类,其子类名称都以相同的形容词开始,那...原创 2019-05-27 20:42:23 · 281 阅读 · 0 评论 -
重构-改善既有代码的设计(十一):处理概括关系
1、字段上移(Pull Up Field)(1)症状:两个子类拥有相同的字段(2)解决:将该字段移至超类(3)如果各个子类是分别开发的,或是在重构过程中组合起来的,你会发现它们拥有重复特性(4)判断若干字段是否重复的唯一办法就是观察函数如何使用它们(5)优点:去除重复的数据声明,通过将该字段的行为从子类移至超类,从而去除重复的行为2、函数上移(Pull Up Met...原创 2019-05-27 20:29:39 · 329 阅读 · 0 评论 -
重构-改善既有代码的设计(十):简化函数调用
1、函数改名(Rename Method)(1)症状:函数胡名称未能揭示函数的用途(2)解决:修改函数的名称(3)函数的名称应该准确表达它的用途,可以先考虑给这个函数写上一句注释,然后想办法把注释变成函数名称public String getTelephoneNumber() { return ("(" + _officeAreaCode + ") " + _of...原创 2019-05-27 20:20:56 · 381 阅读 · 0 评论 -
重构-改善既有代码的设计(四):构筑测试体系
1、自测试代码的价值(1)确保所有测试都完全自动化,让它们检查自己的测试结果(2)想要进行重构,首先前提就是拥有一个可靠的测试环境(3)开始编程前编写测试代码有利于先弄清楚添加这个功能需要做些什么(4)改造无法测试的代码,每个类都应该有一个用于测试的main函数(5)编写测试代码,往往一开始先让它们失败,证明测试机制是正常运行的(6)JUnit框架设计用来编写单元测试,功能...原创 2019-05-23 11:19:50 · 331 阅读 · 0 评论 -
重构-改善既有代码的设计(三):代码的坏味道
1、重复代码(1)设法将相同的程序结构合二为一,程序变得更好(2)对于两个互为兄弟的子类内含有相同表达式,先提取共同的代码组成一个方法,然后放到超类中,使用模版设计模式(3)两个毫不相关的类出现重复代码,考虑将重复代码提炼到一个独立类中,然后在类内使用这个新类2、过长函数(1)让小函数容易理解的关键在于一个容易理解的好名字(2)每当感觉需要以注释说明的时候,就需要把要说明的...原创 2019-05-23 11:16:52 · 241 阅读 · 0 评论 -
重构-改善既有代码的设计(二):重构原则
1、何为重构(1)对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。(2)添加新功能时不应该修改既有代码,通过测试并正常运行,可以衡量自己的工作进度(3)重构时不能再添加功能,只管改进程序结构2、为何重构(1)代码量的减少并不会使系统运行的更快,但代码量的减少将使未来可能的程序修改更容易(2)重构帮助找到bug(3)良好的设...原创 2019-05-23 11:14:30 · 186 阅读 · 0 评论 -
重构-改善既有代码的设计(一):第一个案例
1、分解并重组长函数(1)代码块越小,代码功能就越容易管理(2)重构之前先检查是否有一套可靠的测试机制(3)做了修改就要编译并测试,保证自己没有破坏任何东西2、更改变量名称(1)代码应该表现自己的目的3、移动函数(1)一般函数应该放在它所用的数据的所属对象内(2)有时保留旧函数,调用新函数,如果旧函数是public,不必修改其他接口4、尽量去除临时变量(1)...原创 2019-05-23 11:13:21 · 275 阅读 · 0 评论 -
重构-改善既有代码的设计(九):简化条件表达式
1、分解条件表达式(Decompose Condition)(1)症状:你有一个复杂的条件(if - then - else )语句(2)解决:从if、then、else三个段落中分别提炼出独立函数(3)将任何大块头代码分解成多个独立函数,根据每个小块代码的用途为分解而得的新函数命名(4)将每个分支条件分解成新函数可以突出条件逻辑,更清楚地表明每个分支的作用,突出每个分支的原因...原创 2019-05-26 17:17:06 · 489 阅读 · 0 评论 -
重构-改善既有代码的设计(八):重新组织数据
1、自封装字段(Self En capsulate Field)(1)症状:直接访问一个字段,但与字段之间耦合关系逐渐变得笨拙(2)解决:为这个字段建立取值/设值函数,并且只以这些函数来访问字段(3)间接访问变量的好处:子类可以通过覆写一个函数而改变取数据的途径(4)直接访问变量的好处:代码比较容易阅读为待封装字段建立取值/设值函数 找出该字段的所有引用点,将它们全部改为调用...原创 2019-05-26 17:11:39 · 387 阅读 · 0 评论 -
重构-改善既有代码的设计(七):在对象之间搬移特性
1、搬移函数(Move Method)(1)症状:如果一个类有太多行为,或一个类与另一个类有太多合作而形成高度耦和(2)解决:在该函数最常引用的类中建立一个有着类似行为的新函数,将旧函数变成一个单纯的委托函数,或者是将旧函数完全移除(3)检查:调用端、被调用端、继承体系中任何一个重定义函数(4)如果源函数包含异常,需要判断逻辑上应该由哪个类来处理这一异常,如果应该由源类来负责,就把...原创 2019-05-25 15:32:17 · 253 阅读 · 0 评论 -
重构-改善既有代码的设计(六):重新组织函数
1、提炼函数(Extract Method)(1)若有一段代码可以被组织在一起并独立出来,就把这段代码放进一个独立的函数,并让函数名称解释该函数的用途(2)提炼函数的契机:过长函数、需要注释才能让人理解(3)注意函数名称和函数本体之间的语义距离(4)创造一个新函数,要根据它“做什么”来命名,而不是以它“怎么做”命名(5)仔细检查提炼出来的代码,看看其中是否引用了“作用域局限于原...原创 2019-05-25 15:20:59 · 362 阅读 · 0 评论 -
重构-改善既有代码的设计(五):重构列表
1、重构的记录格式名称 ----> 简短概要 ----> 动机 -----> 做法 ----> 范例2、寻找引用点(1)查找替换时需要仔细检查每个引用点,以确保替换时不出错,因为在不同类中可能会有相同的函数名称,在同一个类中也可能存在名称相同签名不同的函数(2)编译器无法找到通过反射机制而得到的引用点3、重构手法(1)重构的基本技巧:小步前进、频繁测...原创 2019-05-25 15:00:05 · 232 阅读 · 0 评论 -
《代码整洁之道》总结与演绎(下)
程序员可以分为三个层次:普通程序员、工程师 、架构师单元测试1、TDD三定律定律一、在编写不能通过的单元测试前,不可编写生产代码。定律二、只可编写刚好无法通过的单元测试,不能编译也算不过。定律三、只可编写刚好足以通过当前失败测试的生产代码。(1)测试与生产代码一起编写2、保持测试整洁(1)测试必须随生产代码的演进而修改,测试越脏就越难修改(2)失去了测试,每...原创 2019-05-09 15:05:51 · 568 阅读 · 0 评论 -
《代码整洁之道》总结与演绎(中)
程序员可以分为三个层次:普通程序员、工程师 、架构师格式1、格式的目的(1)代码格式关乎沟通,而沟通是专业开发者的头等大事;(2)选用一套管理代码格式的简单规则,然后坚持贯彻执行(3)团队应该采用一致的格式规则2、垂直格式(1)名称应该简单且一目了然,最顶部应该给出高层次概念和算法,细节应该往下渐次展开(2)在封包声明、导入声明和每个函数之间,都要有空白行隔开...原创 2019-05-06 11:07:33 · 135 阅读 · 0 评论 -
重构-改善既有代码的设计(十三):重构、复用与现实
1、现实的检验(1)重构的潜在因素:在编写代码时对自己所做的事情没有完整的了解,并且受到生产进度的压力(2)重构被用于开发框架、抽取可复用组件、使软件架构更清晰、使新功能的增加更容易(3)重构可以帮助你充分利用以前的投资,减少重复劳动,使程序更简洁有力(4)重构时,你必须找出待重构的这一部分程序被什么地方引用2、为什么开发者不愿意重构它们的程序(1)不知道如何重构(2)...原创 2019-05-27 20:43:21 · 263 阅读 · 0 评论