![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记
每天进步一点_点
正在不断地学习,希望和大家多多交流。
展开
-
重构-改善既有代码的设计读书笔记(六)
重新组织函数6.6 Split Temporary Variable(分解临时变量)你的程序有某个临时变量被赋值超过一次,它既不是循环变量,也不拥有收集计算结果,针对每次赋值,创建一个独立、对应的临时变量。double temp=2*(height+width);system.out.printlt(temp);temp = height*width;system.out.println(te原创 2016-12-09 13:18:47 · 301 阅读 · 0 评论 -
重构-改善既有代码的设计读书笔记(十一)
处理概括关系11.11 Replace Inheritance with Delegation(以委托取代继承)某个子类只使用超类接口中的一部分,或是根本不需要继承而来的数据。在子类中新建一个字段用以保存超类;调整子类函数,令它改而委托超类;然后去掉两者之间的继承关系。11.12 Replace Delegation with Inheritance(以继承取代委托)你在两个类之间使用委托关系,并经原创 2016-12-22 21:43:37 · 283 阅读 · 0 评论 -
重构-改善既有代码的设计读书笔记(十)
简化函数调用10.1 Rename Method(函数改名)这个就不用细说了,就讲一个给函数命名的好方法:首先考虑应该给这个函数加上一句怎样的注释,然后想办法将注释变成函数名称。10.4 Separate Query from Modifier(将查询函数和修改函数分离)某个函数既返回对象状态值,又修改对象状态。建立两个不同的函数,其中一个负责查询,另一个负责修改。String foundMiscr原创 2016-12-21 10:08:19 · 282 阅读 · 0 评论 -
重构-改善既有代码的设计读书笔记(八)
重新组织数据8.1 Self Encapsulate Field (自封装字段)你直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙。为这个字段建立取值/设值函数,并且只以这些函数来访问字段。8.2 Replace Data Value with Object(以对象取代数据值)你有一个数据项,需要与其他数据和行为一起使用采有意义,将数据项变成对象。 做法: 1. 为待替换数值新建一个类,在其原创 2016-12-11 17:44:33 · 332 阅读 · 0 评论 -
重构-改善既有代码的设计读书笔记(四)
构筑测试体系原创 2016-12-08 23:26:07 · 263 阅读 · 0 评论 -
重构-改善既有代码的设计读书笔记(三)
第3章 代码的坏味道3.1 Duplicated Code(重复代码)同一个类的两个函数含有相同表达式使用Extract Method(参见6.1)提炼出重复代码,然后让两个地方调用这段代码。两个互为兄弟的子类内包含相同表达式对两个类都使用Extract Method(参见6.1),然后将被提炼出来的代码使用Pull Up Method(参见11.2),将它推入超类。如果代码之间只是类似而并非完原创 2016-09-26 07:58:07 · 461 阅读 · 0 评论 -
重构-改善既有代码的设计读书笔记(二)
重构原则2.1 重构 :对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。2.2 为何重构:重构改进软件设计 代码的腐败是累积性的,经常性的重构可以帮助代码维持自己该有的形态。重构使软件更容易理解 我们要考虑的不仅是计算机,更应该考虑以后的开发者。重构帮助找到bug 通过重构,理解代码意图和程序结构,有助于找到bug。重构提高编程速度 良原创 2016-12-06 09:58:35 · 441 阅读 · 0 评论 -
代码整洁之道读书笔记(十七)
代码的坏味道原创 2016-12-05 10:00:24 · 308 阅读 · 0 评论 -
代码整洁之道读书笔记(十)
类10.1 类的名称应当描述其权责。 实际上,命名正是帮助判断类的长度的第一个手段。如果无法为某个类命以精确的名称,这个类大概就太长了。10.2 应该能够以大概25个词简要描述一个类,且不用“if”,”and” ,”or”和“but”等词汇。10.3 单一权责原则(SRP) :类或模块应该有且只有一个加以修改的理由。10.4 系统应该由许多短小的类而不是少许巨大的类组成。每个小类封装一个权责,只有一原创 2016-12-05 09:51:10 · 232 阅读 · 0 评论 -
代码整洁之道读书笔记(九)
单元测试9.1 TDD三定律 在编写不能通过的单元测试前,不可编写生产代码。只可编写刚好无法通过的单元测试,不能编译也算不通过。只可编写刚好足以通过当前失败测试的生产代码。9.2 测试代码的环节: 1. 构造测试数据。 2. 操作测试数据。 3. 检验操作是否得到期望的结果。9.3 每个测试一个概念。 9.4 整洁测试的规则:快速独立可重复:测试应当可在任何环境中重复通过原创 2016-12-04 23:04:06 · 208 阅读 · 0 评论 -
代码整洁之道读书笔记(八)
边界8.1 对于第三方代码,应该把其调用保留在类或近亲类中。避免从公共API返回第三方代码,或将第三方代码作为参数传递给公共API。 8.2 可以包装第三方代码,或者使用适配器模式将我们的接口转换为第三方代码的接口,降低对其的依赖。原创 2016-12-04 22:38:22 · 257 阅读 · 0 评论 -
代码整洁之道读书笔记(七)
错误处理7.1 应创建信息充分的错误信息,并和异常一起传递出去。在消息中,包括失败的操作和失败类型。如果你的应用程序有日志系统,传递足够的信息给catch块,并记录下来。 7.2 可以将第三方API打包,确保它返回通用异常类型,降低对它的依赖,以后你可以不太痛苦地改用其他代码库。 7.3 别返回null值,可以打包调用的第三方API,通过抛出异常或返回特例对象的方法,防止其返回null值。 7原创 2016-12-04 22:25:33 · 221 阅读 · 0 评论 -
代码整洁之道读书笔记(二)
命名原创 2016-12-02 13:21:28 · 274 阅读 · 0 评论 -
代码整洁之道读书笔记(六)
对象和数据结构6.1 对象 把数据隐藏于抽象之后,曝露操作数据的函数。比如,一个仅仅提供了面积计算函数的形状类。 6.2 数据结构 曝露其数据,没有提供有意义的函数。比如,一个仅仅提供了属性的取值器和赋值器的形状类。 6.3 过程式代码 (使用数据结构的代码)便于在不改动既有数据结构的前提下添加新函数;面向对象代码 便于在不改动既有函数的前提下添加新类。 6.4 得墨忒尔律 :模块不应该了解它原创 2016-12-04 22:04:15 · 476 阅读 · 0 评论 -
代码整洁之道读书笔记(五)
格式5.1 关系密切的概念应该互相靠近(当然,这条规则不适用于分布在不同文件中的概念)。除非有很好的理由,否则就不要把关系密切的概念放到不同文件中。 5.2 对于那些关系密切、放置在同一源文件中的概念,它们之间的区隔应该成为对相互的易懂度有多重要的衡量标准。应该避免在不同源文件和类中跳来跳去。 5.3 变量声明 应该尽可能靠近其使用位置。 5.4 若某个函数调用了另外一个,就应该把他们放到一起原创 2016-12-04 21:40:38 · 233 阅读 · 0 评论 -
代码整洁之道读书笔记(三)
如何提高函数的可读性原创 2016-12-03 23:01:38 · 397 阅读 · 0 评论 -
重构-改善既有代码的设计读书笔记(七)
在对象之间搬移特性7.1 Move Method(搬移函数)你的程序中,有个函数与其所驻类之外的另一个类进行更多交流:调用后者,或被后者调用。在该函数最常引用的类中建立一个有着类似行为的新函数。将旧函数变成一个单纯的委托函数,或将旧函数移除。 做法: 1. 检查源类中被源函数所使用的一切特性,考虑它们是否该被搬移。 2. 检查源类的子类和超类,看看是否有该函数的其他声明。 如果出现其他声明原创 2016-12-10 23:02:32 · 297 阅读 · 0 评论 -
重构-改善既有代码的设计读书笔记(九)
简化条件表达式9.5 Replace Nested Conditional with Guard Clauses(以卫语句取代嵌套条件表达式)函数中的条件逻辑使人难以看清正常的执行路径。使用卫语句表现所有特殊情况。double getPayAmount(){ double result; if(idDead) result = deadAmount(); else{原创 2016-12-15 10:03:11 · 464 阅读 · 0 评论