读书笔记之《重构》第二章

  重构原则。这一章介绍的概念性的东西有点多,作者在对其详细解释,我将其总结性的语句提取了出来。
  从何谓重构说起,将重构看作一个名词,重构就是对软件内部的一种调整,目的是不改变软件功能,提高代码可理解性,降低代码修改的成本,一般来说都是对代码的小改动。作为动词来讲,重构表示使用一系列手法,不改变软件功能,调整软件结构。对软件的修改也分两种,这里作者引入“两顶帽子”的比喻,分别指代添加新功能和重构,我们应该在同一时间只专注于其中一种事情,重构的时候,就不要添加新功能,添加新功能时候,就不去重构,并且无论何时都要清楚自己在戴的是哪一顶帽子。
  为什么要重构呢。重构的目的是帮助程序员良好地控制自己的代码。具体的作用有四种。一,重构帮助改进软件设计。重构很像是在整理代码,让所有的代码回到应有的位置上面,这里我想起学习过的一个视频中举得例子,很乱的一个房间,地上乱七八糟的各种东西,早上起床了,想找一双袜子来穿,也许找到袜子还不算太难,但是要找到两只一样的,还真要花点时间。如果我们找袜子的时候顺便把房间整理一下,将衣服,袜子等各种东西归类,下次再找袜子就会很轻松。重构同时消除重复冗余的代码,确定所有事务和行为在代码中只表述一次,使修改程序更容易,这正是优秀设计的根本。二,重构使软件更容易理解。我们的代码,写出来之后,后面还会有别的人来阅读,以对其做出修改或者添加一些功能,如果代码易于理解,可以节省很多时间,也许过了段时间,自己再阅读,也会方便了自己。重构可以帮助理解不熟悉的代码,帮助程序员看到设计层面的东西,将理解带入更高的层次。三,重构帮助找到bug,重构首先可以理清代码的结构,因此可以更容易找到bug。四,提高编程速度。良好的设计师快速开发的根本,设计好,添加新功能也会更加方便快速。
  重构的时机,何时重构呢。事不过三,三则重构。重构应该是随时进行的,而不是可以抽出一定的时间。本身重构就是为了协助其他的事情,不要为了重构而重构。可以在添加功能时候重构,主要原因是在添加功能时重构,可以帮助我更好理解功能,更方便添加功能。
修补错误时重构。前面提到的,重构可以帮助找出bug,重构理清的设计结构,找bug更快。
复审代码时重构,复审代码本身也是好处多多,重构可以帮助理解别人的代码,更好的理解别人的代码,帮助代码的复审。
  关于重构的难题,一是数据库,因为大多数商用程序都与背后的数据库紧密耦合在一起,这是难修改的原因之一。对于非对象数据库,解决的办法是在对象模型和数据库模型之间插入一个分个层。二是修改接口。如果重构手法改变了已发布的接口,尽量保留旧的接口,让旧的接口调用新的接口。三是一些难以通过重构手法完成的设计改动。这种情况要先想象重构的情况,考虑比较好的重构方案。
  什么时候不该重构呢。比如代码太过混乱,重构还不如重写代码来得简单,比如项目已近最后阶段,也要避免重构,毕竟要考虑项目的进度。
  重构与设计。重构与设计互补,事先做好设计可以节省返工的成本。有时候重构可以取代预先的设计,按照最初的想法编码,写好让项目运行起来然后再重构。重构可以带来更简单的设计,产生更好的设计。
  重构与性能。重构对软件的性能会有怎样的影响呢?很多时候,性能也比较重要,为了良好的结构忽视性能也是不可取的,但是性能和结构不是冲突的,只是在有些情况下,确实造成影响,就需要考虑重构是否值得了。作者提供了三种快速写软件的方法,最严格的时间预算法,通常用于对性能要求极高的实时系统。第二种是持续关注发,要求在任何时候做任何事都要考虑到系统的高性能。第三种是利用上述百分之九十的统计数据,编写时候不对性能作特殊关注,知道后面进入性能优化的时候,再按照特定的程序调整程序的性能。
  
  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值