文档章节

读《代码重构》一书小计

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

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

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

 

第一章:

    重构原则:去除临时变量

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

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

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

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

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

第二章:

    重构作用:

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

                        重构使软件更易理解

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

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

第三章:

    自动测试:

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

 

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

© 著作权归作者所有

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

评论(1)

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

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

itwriter
2015/03/27
251
3
请教一个折扣金额分摊算法的问题

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

情天
2017/01/10
688
6
温故而知新之:IUS、IFS、IFFS

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

lych528
06/29
0
0
Thoughtworks公司代码题目:收银机

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

ricardohn
2016/03/06
441
0
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

没有更多内容

加载失败,请刷新页面

加载更多

小白带你认识netty(三)之NioEventLoop的线程(或者reactor线程)启动(一)

在第一章中,我们看关于NioEventLoopGroup的初始化,我们知道了NioEventLoopGroup对象中有一组EventLoop数组,并且数组中的每个EventLoop对象都对应一个线程FastThreadLocalThread,那么这个...

天空小小
今天
3
0
PHP动态扩展Redis模块

查看已有模块 [root@test-a ~]# /usr/local/php/bin/php -m[PHP Modules]bz2Core...zlib[Zend Modules] 下载包,解压,生成configure文件 [root@test-a ~]# cd /usr/local/src/[ro......

野雪球
今天
3
0
在Ignite中使用线性回归算法

在本系列前面的文章中,简单介绍了一下Ignite的机器学习网格,下面会趁热打铁,结合一些示例,深入介绍Ignite支持的一些机器学习算法。 如果要找合适的数据集,会发现可用的有很多,但是对于...

李玉珏
今天
5
0
Mybatis应用学习——简单使用示例

1. 传统JDBC程序中存在的问题 1. 一个简单的JDBC程序示例: public class JDBCDemo {public static void main(String[] args) {Connection con=null;PreparedStatement statemen...

江左煤郎
今天
4
0
使用JavaScript编写iOS应用业务逻辑

JSAUIKitCocoa使你可以使用JavaScript编写对性能要求不高但可能变动性很大的iOS应用的业务逻辑部分,View组件、需要多线程支持的Model等则直接使用原生对象。 编写方式与React Native相似,但...

neal01
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部