《重构》第十章 - 读后感(简化函数调用)

本文介绍了代码优化的两个关键方面:简化条件表达式和函数调用。通过消除判断标志、合理命名函数、调整参数、分离查询与修改函数等方法,提升代码可读性和效率。强调了函数的单一职责原则,避免过多参数并提倡使用对象传递信息。同时,提倡删除无用代码,保持代码整洁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第九章是简化条件表达式,其中提供了8种条件简化方式。主要采用的简化方式就是将判断标志无限的进行压缩,最好将其消灭了。如果消灭了那么就将其最简化,使之能够见文晓意。其中引入null对象以及多态的形式都是试图消灭判断语句。但是这里并不是说看完书就可以在工作中写出符合历史规律的好代码,很多事情的根本改变还是需要原创性的观点。而书本在任何时候也只能起到定位方向的作用。

本书的第十章为简化函数调用,这块我们对其进行一些了解,看看是否能够形成对自己的一种反思。

1.函数改名

 函数的现有名称不能提示函数的用途,那就应该对其进行名称的修正。说到这块确实应该好好反思我们有些同事了,变量和函数名称定义非常奇特,让人摸不着头脑。完全一副CS刚入门的作风。所以这块还是要非常注意,就个人来说,我习惯采用名称+限定词来定义变量,使用动词+名词+限定词来表征函数名。

2.添加参数

如果某个函数需要从调用端得到更多的信息,那么为此函数添加一个对象参数,让该对象带进函数所需的信息。这块在idea中是非常好用的,但是我们要注意函数的参数最好不要大于3个,超过三个就应该使用对象的形式进行传参。

3.移除参数

如果函数本体中不再需要某个参数,那么就将该参数去除。这块我们都懂的如果代码存在不使用的变量往往会成为代码的一种成本,造成代码可读性差。就本人来说我看到我们同事有些从来都不会删除多余的代码,最后导致代码越来越脏。每次看他写的代码就让人心凉了一半。所以说开发中要勇于删除不用、无效的代码。即便其可能在未来有用,你也应该将其删除,现在的git都是非常好的版本控制组件,不可能存在找不到的情况。

4.将查询函数和修改函数分离

如果某个函数既返回对象状态值,又修改对象状态,那么就建立两个不同的函数,其中一个负责查询,一个负责修改。这块要表达的意思就是说如果我们在一个函数中既做修改,然后再获取一些数据返回。那么就应该分离开来,并写成两个函数。这块确实应该说一下,我们很多同事写代码就是不注意,就举例来说比如要给用户送积分,然后再查询一些值返回。有些同事就写到一个函数中,那么效果就是代码复用性差。其他部分的有关送积分的逻辑就得重写然后就是重复代码的问题。所以代码中的变量就变多,间接导致代码的可读性变差。但是要注意的是在多线程环境中函数分离之后就应该灵活使用锁。

5.让函数携带参数

若干函数做了类似的工作,但在函数本体中却包含了不同的值。那么就建立单一函数,以参数表达哪些不同的值。这里说的就很明确了,如果本来一个函数就可以搞定的事情,然后开发人员使用了很多个类似的事。而且所做的事没有什么大的差别,那么就应该将其合并成为一个独立的函数,然后通过参数的方式进行界定。

6.以明确函数取代参数

如果有一个函数,其中完全取决于参数值而采取不同的行为,只对该参数的每一个可能值,建立一个独立的函数。这块就想表达的是专人专事,不要用一个函数做多个工作。在上边5小节中说要将类似的情况通过参数进行合并,这里的解除合并并不是这里说的类似情况,反而是不类似的情况。就是说一个函数中做了不类似的多个操作。那么这多个操作就应该独立成具体的函数,而不是放在一个函数。这块独立出来能够更好的进行代码复用!

7.保持对象完整

如果你从一个对象中获取若干值,将它们作为某一次函数调用的参数,那么就改为传递整个对象!

有时候来自同一个对象的若干数据作为参数传递的问题是玩意将来要调用函数需要添加新的数据项的时候就必须找到所有的修改点,那就非常多了,会很累。但是如果传递是对象就不存在这个问题。这也是之前一直强调使用对象的原因。同时对象的时候自带注释的效果,能够让代码的可读性增强。但是如果我们的函数只需要对象中的某一项数据的时候,那么还是传数值比较好。

8.用函数取代参数

对象调用某个函数,并将所得结果作为参数,传递给另一个函数,而接受该参数的函数本身也能调用前一个函数,那么就让参数调用者去掉该项参数,并直接调用前一个函数。这块要表达的意思的通俗理解就是不要帮助哪些可以自己搞定的人。

为什么这么干的原因是我们也不了解像这种参数会有多少,如果全部放到参数会导致代码很乱,不太友好,如果新建对象放进去再传进去是多此一举的事情,因为他本身就可以获取到这些。但是如果函数确实无法获取相应的值,那么我们就必须在入参的时候传递进去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值