文档章节

读《代码重构》一书小计

钟良
 钟良
发布于 2016/07/13 09:48
字数 487
阅读 164
收藏 1
点赞 0
评论 1

通过阅读《代码重构》一书,让我了解的最重要的一点是“重构不同于优化”。在这之前,我的观念中,“重构”与“优化”是划等号的。不过通过这本书,我了解到他们做着完全不同的事情,甚至是对立的。

下面讲讲重构一书中对我当前有用的部分:

 

第一章:

    重构原则:去除临时变量

                          需要注释的地方都可以提取函数或方法(用函数名作为注释)

                          函数或方法名应该描述实现什么功能,而不是描述怎么实现

    对比:重构——使代码(对人)易读、易改、易复用

                 优化——提高代码性能(往往使代码难以理解)

    开发正常流程:增加新功能-》重构-》增加新功能-》重构……(一个正常的开发者,往往在这之间不断来回切换,间隔有时只有几分钟。要时刻知道自己当前是在增加新功能还是在重构)

第二章:

    重构作用:

                        重构改进软件设计——去除重复代码(代码维护变得简单)

                        重构使软件更易理解

                        重构帮助寻找bug(随着理解的加深,bug浮出水面)

                        重构提高编程速度(短期拖慢进度,提高的是后续的编程速度,达到整体的进度加快、速度提高。如果一个项目接近尾声,就不要使用重构,因为重构只会起到反作用)

第三章:

    自动测试:

                        一个开发人员,开发过程中,70%以上的时间是在做测试工作。这足以体现自动测试的重要性。

 

之后的8章讲的是在重构工具中使用的各种函数,对我来说是没有任何用处的,所以就没有看。

© 著作权归作者所有

共有 人打赏支持
钟良
粉丝 8
博文 76
码字总数 30027
作品 0
嘉兴
部门经理
加载中

评论(1)

佳炜
佳炜
666
数据库设计中常见的糟糕设计以及对应的改良。

大家知道有讲述数据库设计常见问题并给出相应解决方案的书籍或文章吗?求推荐啊。 前段时间看了《代码重构》一书,当时就有种被击中G点般的亢奋。因为里边提到很多我实际工作中提到的问题,并...

itwriter
2015/03/27
251
3
Thoughtworks公司代码题目:收银机

需求描述 商店里进行购物结算时会使用收银机系统,这台收银机会在结算时根据客户的购物车中的商品和商店正在进行的优惠活动进行结算和打印购物清单。 已知商品信息包含:名称,数量单位,单价...

ricardohn
2016/03/06
441
0
请教一个折扣金额分摊算法的问题

比如说购物车里面5个产品,每个产品会有单价、数量和小计金额,整单有一个额度不定的折扣金额,需要分摊到每个产品的单价中,现在需要写一个算法来分摊这个折扣金额。 例如:购物车有A和B这2...

情天
2017/01/10
688
6
Oracle ROLLUP和CUBE 用法

1、Oracle ROLLUP和CUBE 用法 Oracle的GROUP BY语句除了最基本的语法外,还支持ROLLUP和CUBE语句。 如果是Group by ROLLUP(A, B, C)的话,首先会对(A、B、C)进行GROUP BY,然后对(A、B)进行G...

Sandy_wu
2013/06/11
0
0
温故而知新之:IUS、IFS、IFFS

IFS: 索引全扫描这里要注意的一点就是不需要扫描所有branch的分支块,因为叶子块与叶子块之间有双向指针,所以找到最左边的叶子块,就可以依序扫描。所以这里可以有以下结论:1 索引键值是排...

lych528
06/29
0
0
Jquery UI 中数据保存为保留小数点后4位有效数字

下面是我要显示的 但是我的小计在显示时有问题啊!!我只想保留小数点后4位有效数字,JQuery UI上有可以设置的吗?小计是不可编辑的。 下面是我程序中的代码,希望给指点一下!谢谢啦! colu...

pengcheng_1024
2012/08/20
2.6K
1
oracle rollup和cube分析

rollup是对group by的扩展,会进行小计和合计,而cube包含rollup,是粒度更精细的小计和合计。当只有一个字段时,rollup和cube是一样的。 可用grouping对rollup和cube进行测试:0看;1不看[...

长平狐
2012/09/19
84
0
jsp +js+jstl 做报表插入行,单元格溢出问题

请教各位高手,jsp做报表,插入行时 问题1:单元格溢出 问题2:插入行会计算错行数 如图所示在第18行 勾选后点击插入按钮,直接插入到17行,单元格还错位 代码思路如下,当统计的序号和小计行...

为什么这么复杂
2017/03/15
76
0
我关于略读的一些心得

前言 在我看来,读书,到底是一件多少有些神圣的事情。闲暇读书时,我总是带着耳机,正襟危坐,在旁放着一杯白开水,怀着对作者的敬仰之心,花费一下午的时光略读整书。此外,读书多少是一件...

iu嘟嘟
2017/08/15
0
0
birt hello world(六)

为birt hello world(五)加汇总 在第五部分的报表的交叉表,直接操作行区域和列区域,如下图: 在行区域选择总计,点击“添加”,数据默认,插入一个总计,如同: 在列区域选择小计,点击添加...

pigpig2008
2015/05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Mybatis拦截器之数据权限过滤与分页集成

需求场景 最近项目有个数据权限的业务需求,要求大致为每个单位只能查看本级单位及下属单位的数据,例如:一个集团军下属十二个旅,那么军级用户可以看到所有数据,而每个旅则只能看到本旅部...

佛系程序猿灬
5分钟前
0
0
Vue作为MVVM框架,M、V、VM分别代表什么?

<script src="vue.js"></script><div id="demo"> {{message}} <input v-model="message"></div><script> var vm = new Vue({ el: '#demo', data: { mes......

JamesView
8分钟前
0
0
SpringCloud 微服务 (十六) 服务追踪 Zipkin

问题 在服务中,有一个接口,该A接口中又调用了其他服务的B、C、D接口,出现一个请求耗时大的问题,这时候并不知道该B、C、D接口中哪个接口造成的耗时量,然后比如确定C服务接口出现的耗时量大,但...

___大侠
50分钟前
0
0
Java面试基础篇——第八篇:抽象类与接口的区别

1.抽象类 抽象类:如果一个类中包含有抽象方法,或这个类使用abstract关键字修饰,则称这个类是抽象类。 抽象方法是什么呢?抽象方法就是指用abstract关键字修饰的方法。 需要注意的是:抽象...

developlee的潇洒人生
今天
2
0
jsoup 相关资料

1.jsoup 2.Jsoup概述 3.jsoup入门 4.jsoup Java HTML Parser 1.11.3 API

IT追寻者
今天
0
0
JPA @MappedSuperclass 注解说明

基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang....

海博1600
今天
0
0
【一】Scala Configuration 相关API

Play使用了 Typesafe config library,但是也提供了一个有着更多Scala高级特性的的 Configuration 封装。不熟悉Typesafe配置的开发者可以移步 configuration文件的语法和特性文档。 读取配置...

Landas
今天
3
0
使用cookie技术 记住账号

1. 效果 2. 实现过程 2.1 前端 将用户的选中传递给后台 这个参数的获取是 参考:https://my.oschina.net/springMVCAndspring/blog/1860498 // var rememberLogin = $("#rememberLoginId").i...

Lucky_Me
今天
1
0
《趣谈网络协议》02之网络分层的真实含义

一、提出问题 1.提出问题 当你听到什么二层设备、三层设备、四层 LB 和七层 LB 中层的时候,是否有点一头雾水,不知道这些所谓的层,对应的各种协议具体要做什么“工作”? 2.这四个问题你弄...

aibinxiao
今天
2
0
Python3学习日志二 Python中的集合set和字典dict

1.集合set 定义一个集合set 我们可以看到定义集合set有两种不同的形式,如果要定义一个空的集合set不能用{}而是要用set();另外,集合是无序的,而且set中的元素是不可重复的,如果你定义了一...

Mr_bullshit
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部