《重构-改善既有代码的设计》读书笔记

        重构这个词,相信程序员对这个词不陌生。不过在读这本书之前,我对这个词确实没什么概念,尽管我是一个程序员。读完了这本书,我才对重构这个词有了一个了解,以及程序重构的重要性。重构即是对软件内部结构的一种调整。通过采取一系列的重构手法,在不改变软件可观察行为的前提下,调整软件结构,让软件的内部结构得以清晰有条理,变得更加容易维护于拓展。此外,让代码变得容易让他人理解。“任何人都能够写出计算机可以理解的代码,唯有写出人类容易理解的代码才是优秀的程序”,我非常喜欢并且赞同这句话,之后也会用这句话警戒自己纠正在代码编写方面的坏习惯。

        这本书先是对重构进行了一个介绍。为什么要重构,什么时候重构。重构除了能够改善软件内部结构,让软件更加容易理解之外,还能帮助找到bug,提高编程速度。良好设计是维护软件开发速度的根本。也许,一开始对一个软件进行重构的时候耗费比较长的时间,这对于大多数的程序员是不愿意干的事情,毕竟在短期看来这是一个浪费时间不讨好的活。从长远看,花点时间对软件仅从重构之后,在之后的软件开发速度上面,就能够得到很大的提升,而且重构后的软件的质量大大提升,变得容易理解,及其有利于自己日后的开发以及后来接收代码的人。那什么时候需要重构,书中给了一个建议,三次法则:第一次大胆去做;第二次做类似的事情可能会产生反感,但是还可以去做;第三次再重复的话就要果断的进行重构。重复的代码 是软件代码的坏味道。那什么是软件代码的坏味道?

        书中详细的举出了各种坏味道的代码。第一个也是最常见的坏味道就是重复的代码。此外还有过长函数、过大的类、过长的参数列表等(这里只是举出常见的代码坏味道,不一一举出)。而后针对这些坏味道如何进行解决,作者则分了单项重构于大型重构两方面结合实例,向读者介绍作者遇到对应的坏味道如何一步步的去重构,在阅读这本书的过程就犹如作者亲自面授,让人醍醐灌顶,受益良多。

        说到重构,尽管我之前对这个词没什么概念。但是阅读这本书之后,对比我平常写代码的一些小习惯,还是会有一些重构的下意识习惯在其中。就好比说,我平时看到代码多次重复了,我会将重复的代码拿出来独立到一个函数中,然后对使用到这个函数块的地方进行替换成对应的函数,这就是书中提到的Extract Method(提炼函数)重构手法;有时候我看到多个类之间有共同的或者说是类似的特征,我会下意识的将这些类提炼出一个父类出来,然后把这些特征放到父类中去,让这些类继承父类。这个就是书中提到的Extract Superclass(提炼超类)的重构手法;我相信几乎所有的程序员都会和我一样,遇到这些常见的基本坏味道,会下意识的进行重构,尽管对重构还没有明确的概念。

        但是这个我们做的这些还远远不够,代码中以然存在很多坏味道是我们不知道或者是没有发现的。这本书就给了我很大的帮助,让我学习了解代码中的坏味道,然后对于代码中坏味道结合解决方法进行重构。

①拿代码注释来说,一般大家都只知道(包括我在内),写注释是一个好习惯。但是却不知道过多注释却恰恰相反。注释过多则泛滥,说明我们自己写的程序不够让人容易理解,需要靠注释才能让人家知道你的程序做了什么。这时候就需要进行重构。在这之前,对于这种注释,我肯定是不会想到还有对注释进行重构的。然而,这种情况就是需要重构。当你感觉需要进行撰写注释的时候你就应该先尝试对代码进行重构,让你自己的代码变得容易理解而不需要靠过多的注释去帮助人家理解你的代码。试着通过重构去掉多余的注释。

②结合上述的注释问题,这里说说书中提到的一个很基本的,但也是很多人没有注意去做或者懒得去做的一个很容易就能做到重构手法。Rename Method(函数重命名),一开始我读到这里,很是惊讶,这个重构手法可以说是举手之劳的工作,而我在之前的代码编写中却没有注意去做,甚至可以说是没有那个意识。很多时候我们需要用注释去解释函数在做什么的时候,很大程度是因为我们的函数名字没有很好的解释函数在做什么,以至于需要靠注释这种东西去帮我们解释。那么我们如果给函数一个好的命名,让人家一看就知道函数要干嘛了,我们还需要什么注释?在这里我有get到了一句:代码首先是为人而写的,其次才是为计算机写的。

③Replace Conditional with Polymorphism(以多态取代条件表达式)。很多时候,我写代码会用到条件表达式,而且很频繁,以至于我们每次写代码看到它习以为常,更别说想到重构这个问题(相信很多人也一样)。其实我错了,当一个函数依靠条件表达式返回多种对象的时候,这个函数就出现了坏味道,而需要我们实现多态取代条件表达式,进行重构。否则,每次需要添加一个新类时候,就需要往其中添加一个分支,日复一日,函数就会变得臃肿不堪,而且难以阅读。

        还有很多坏味道以及对应的解决方法,我这里只是略举几个我之前编写代码过程中没有做到的重构。很多时候,我只是做到一些很基本的、很常见的一些重构。有很多坏味道的代码需要重构是我没有发现甚至是不知道的,以至于我的代码编写质量不高,有时候不容易理解。所以这本给我带来很大帮助,让我学到了很多坏味道的代码以及对应的解决方案。虽然读过一遍,但很多坏味道代码需要在实战中结合实际情况才能做出解决策略,而且读过一遍也不能完全掌握其书中所列举的所有坏味道的代码。这本书值得多读几遍。非常推荐这本书,写的确实很好。同时很感谢作者,让我认识到重构的重要性(我更想说必要性)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值