《重构-改善既有代码的设计》第三章(上)


前言

从第三章开始,作者就开始介绍一些重构的具体细节了,通过这些的具体的方法就可以一步一步慢慢开始整个重构的过程了。本章主要讲述的主题是代码的坏味道。所谓代码的坏味道,我想就是指代码不好的感觉吧,其实我们很难通过一些量化标准来判定一份代码是否是好的代码,但是随着开发经验不断地提升,我们会对不好的代码更加敏感。本节作者详细介绍了许多代码的坏味道,细细品读,收获颇丰


一、重复代码(Duplicated Code)

       不论是一个刚开始学习编程的人,或是经验老道的开发者,甚至是仅仅了解编程的外行,都可以理解为什么重复代码一定是最明显的坏味道。其中最明显的问题就是,每一次的修复或是添加新功能,都要同时将所有复制粘贴的地方全部都修改一遍,每疏漏一处,就有可能引入难以追踪的问题。        重复代码大致可以分为三种情况,同一个函数有相同表达式;在两个兄弟的子类有相同表达式;两个毫不相干的地方有相同的表达式。当重复代码在同一个函数中,只需要提出一个新的函数;当兄弟子类中,可以考虑将相同的代码提到父类。如果只有部分不同,完全可以将相同的部分提出,放在父类,再将不同的部分作为抽象方法,由子类实现。(Template Method设计模式)。两个毫不相关的类,可以把相同部分的提入一个独立类中,分别调用。

二、过长函数(Long Method)

       在很久以前程序员就已经认识到,程序越长越难理解,往往短小的函数在复用性,拓展性,稳定性都是优于长函数的。在实际生产中,并不能用固定的行数来评定一个函数是否过长,更小的函数可以提供的是更好的理解能力。通过将函数封装成不同层次的业务逻辑,可以让开发者无需关心最低层次的底层实现。尤其当不是原作者的开发者来阅读时会更容易理解。 本节,作者所倡导的原则是:每当感觉要以注释来说明什么时,我们就把需要说明的东西写进一个独立函数中。这样做的最大好处就是把函数的目的和具体实现层次区分了出来,同一层次的代码阅读会比不同层次的更加顺畅。        绝大多数只需要使用Extract Method将函数提出即可,但当函数非常长,变量非常多,就会让你在调用时不断地进行传入传出参数,以及对这些参数的适配处理。这时候就可以使用万能的杀手锏了。 Replace Method with Method Object 例如:
// typescript
function longMethod(context) {
   
	let paraFor2 = function1(context);
	let res2 =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值