重构 改善既有代码的设计(读书笔记一)

来源:互联网 发布:新手模拟钢琴软件 编辑:程序博客网 时间:2024/05/10 00:43

一、重构,第一个案例

二、重构原则

2.1定义:

a.重构定义(名词):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。

b.重构定义(动词):使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。


2.2作用:

a.重构改进软件设计

b.重构使软件更容易理解

c.重构帮助找到bug

d.重构提高编程速度


2.3重构时间:事不过三,三则重构

a.添加功能时重构

b.修补错误时重构

c.复审代码时重构


2.4怎么对经理说:

“计算机科学是这样一门科学:它相信所有问题都可以通过增加一个间接层来解决。”


2.5重构的难题:

a.数据库:在对象模型和数据库模型之间插入一个分隔层,这就可以隔离两个模型各自的变化。

b.修改接口:让旧接口调用新接口,将旧接口标记为deprecated。不要过早发布接口,修改代码所有权政策,使重构更顺畅。

c.难以通过重构手法完成的设计改动:

d.何时不该重构,而是重写:重构之前,代码必须起码能够在大部分情况下正常运作。


2.6重构与设计:


2.7重构与性能:

三种编写快速软件的方法:

1.时间预算法

2.持续关注法

3.针对多次执行的代码进行优化


2.8重构起源何处


三、代码的坏味道

3.1 重复代码

3.2 过长函数

3.3 过大的类

3.4 过长参数列

3.5 发散式变化:一个类受多种变化的影响,将这种类拆分为多个类。

3.6 散弹式修改:一种变化引发多个类相应修改,将多个类组成一个类。

3.7 依恋情结

3.8 数据泥团

3.9 基本类型偏执

3.10 Switch Statements

3.11 平行继承体系

3.12 冗赘类

3.13 夸夸其谈未来性

3.14 令人迷惑的暂时字段

3.15 过度耦合的消息链

3.16 中间人

3.17 狎昵关系

3.18 异曲同工的类

3.19 不完美的类库

3.20 纯稚的数据类

3.21 被拒绝的遗赠

3.22 过多的注释


第4章 构筑测试体系

4.1 自测试代码的价值

4.2 Junit测试框架

4.3 添加更多测试


第5章 重构列表

5.1 重构的记录格式

名称

概要

动机

做法

范例


5.2 寻找引用点


5.3 这些重构手法有多熟练


第6章 重新组织函数

6.1 Extract Method 提炼函数









0 0