[重构]读书笔记

如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。

没个傻瓜都能够写出计算机能够理解的代码,但是唯有写出人类能够理解的代码的程序员,才是优秀的程序员。

第一章

重构步骤

1. 为即将修改的代码建立一组可靠的测试环境。测试机制再重构领域的地位很重要。

2. 分解并重组

  2.1 extract

  2.2 move

  2.3 replace temp with query

  2.4 State模式 Gang of four,一个对象

  2.5 Replace Type Code with State/Strategy

  2.6 Replace Conditional with Polymorphism

  2.7 Self Encapsulate Field

第二章 重构原则

重构的定义

1. 对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。

2. 使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。

何时重构

三次法则,事不过三,三则重构

3. 重构起源何处

small talk: https://zh.wikipedia.org/wiki/Smalltalk

Bill Opdyke,博士论文,重构领域具有相当高的价值。

第三章 代码的坏味道

坏味道条款

1. duplicate code

2. Long Method

3. Large Class

4. Long Parameter List

5. Divergent Change 发散式变化, 如果某个类经常因为不同的原因在不同的方向上发生变化,divergent change就出现了。

6. Shotgun Surgery 霰弹式修改。如果每遇到某种变化,你就必须在许多不同的类内做出许多小修改,你所面临的坏味道就是shotgun surgery

7. Feature Envy 依恋情结,函数对某个类的兴趣高于对自己所处类的兴趣

8. Date Clumps 数据泥塘

第十四章 重构工具

重构工具的技术标准:

1. 程序数据库

2. 解析树

3. 准确性,由工具实现的重构,必须合理保持程序原有行为

重构工具的实用标准:

1. 速度

2. 撤销,重构保持了程序的行为,那么方向重构应该也能够保持程序的行为

3. 与其他工具集成

时间: 2024-07-30 04:35:23

[重构]读书笔记的相关文章

《重构》读书笔记 与 Eclipse 重构功能使用

第二章 重构原则 重构是什么? 重构(名词):对软件内部结构的一种调整,目的是在不改变[软件之可察行为]前提下,提高其可理解性,降低其修改成本. 重构(动词):使用一系列重构准则(手法),在不改变[软件之可察行为]前提下,调整其结构. 两顶帽子:添加新功能和重构,不能同时进行. 为何重构? 改进软件设计:可能设计之初根据已有需求,是世界上最优的设计.但是可能过程中增删许多功能,原有设计已经不满足现有需求. 使软件更易理解: 通常多添加注释不一定是好的选择,因为可能代码会被别人修改,而忽略修改注释

《重构》读书笔记第一章

<重构——改善既有代码的设计>,英文名<Refactoring, Improving the Design of Existing Code>,大神Martin Fowler著. 1.如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性. 2.重构之前,首页检查自己是否有一套可靠的测试机制.这些测试必须有自我检验能力. 3.重构技术就是以微小的步伐修改程序.如果你犯下错误,很容易便可发现它. 4.任何

《重构》--读书笔记

第一章 重构,第一个案例 该章主要举一个例子说明如何重构以及重构是什么 重构的第一步,为即将修改的代码建立测试环境 重构时依赖测试来体现是否有bug 函数如果过长尝试把它分解,代码块越小,代码功能越容易管理,代码的处理与移动就越轻松. 降低代码的重复量 重构每次修改的幅度都很小,所以任何错误都很容易被发现 变量名/函数名是代码清晰的关键,好的代码应该清楚地表达出自己的功能 任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员. 临时变量不需要要及时去除 用多态代

《HTML重构》读书笔记&amp;思维导图

最近读了<HTML重构>这本书,以下做出自己的总结归纳,大家可以一起学习交流. 什么是重构?重构是在不改变程序行为的基础上进行小的改动是代码基本逐渐完善的过程,通常需要一些自动化工具的帮助.好的网站是需要我们对代码进行日臻完美的改善.而搜索引擎优化(seo)是网站重构的主要驱动之一,跟图片相比搜索引擎更看重文本:跟后端文本相比更看重前端文本,他们更看重标题或元标签.作者希望通过更多的文本内容取代如图片.flash等可以做好SEO.我个人觉得看完了这本书对做 SEO是非常有帮助的 百度百科对重构

读【重构】读书笔记之一 代码的坏味道

一.重复的代码: 包含完全重复.部分重复.以及程序不同结果相同 1)一个类的两个函数有相同的表达式  ---提取方法 2)两个互为兄弟的子类含有相同表达式----提取方法,放在父类 3)两个毫不相干的类中的重复----引入第三方类 4)如果代码只是类似,并非完全相同----分割出相同部分构成独立方法 5)有些函数以不同算法做相同的事----选择其中清晰的一个 二.过长的函数 1)积极分解函数,每当我们需要以注释来说明点什么的时候,就可以写进独立的函数了.并以其用途命名(而非实现手法),这样就不需

《互联网+智能家居--传统家居颠覆与重构》(陈根)读书笔记及总结

<互联网+智能家居--传统家居颠覆与重构>读书笔记 一.什么是智能家居 真正智能家居时代是多种技术和各种传感器技术高度融合,软硬件体验做到极致各种服务非常舒心的时代. 能够让用户真正地体验到智能生活带来的便利的产品,才能打动用户,赢得市场. 目前自能家居还停留在物与物之间的连接,而智能家居的核心是让产品智能化后为生活服务,因此人与产品的智能互动是最终目标.而可穿戴设备可监控人体特征数据自动对产品进行控制.想象下,利用神经影像技术  ,大脑植入式芯片可以检测人大脑思想行为,自动控制硬件设备 ,而

[Spring Data Repositories]学习笔记--定义自己的repository

有时,我们会需要用到自己定义的一些查询方法,可以按照下面几步进行. 1. 定义一个包含该方法的接口 Interface UserRepositoryCustom { public void someCustomMethod(User user); } 2. 定义实现 class UserRepositoryImpl implements UserRepositoryCustom { public void someCustomMethod(User user){ //Your custom im

[Spring Data Repositories]学习笔记--为repository添加通用的方法

如果想把一个方法加到所有的repository中,用前一篇提到的方法就不合适了. 英文原版,请看 http://docs.spring.io/spring-data/data-mongo/docs/1.5.2.RELEASE/reference/html/repositories.html#repositories.custom-behaviour-for-all-repositories 1. 定义自己的repository,要从基础的repository进行继承. public interf

[Spring Data Repositories]学习笔记--使用现有的repository

以下内容是在学习Spring-Data-mongoDB中的Spring Data Repositories时做的一些笔记.备忘! 感觉学习还是看官方的资料比较透彻一些. Spring Data Repositories目的:减少重复的持久化代码. 常用的几个repository interface, Repository <-- CurdRepository <-- PagingAndSortingRepository 最后一个主要是用来做分页和排序用的. Repository使用步骤 1.