《重构》读书笔记(六)——第六章 重新组织函数

本文分享了软件重构中的关键技巧,包括提炼函数、内联函数、引入解释性变量等手法,并强调了函数单一职责的重要性,以及如何提升代码质量和可读性。

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

1、在很多情况下,我们使用“提炼函数”这个重构手法时会遇到一个困难,即如何给函数起一个好的名称。所以我们需要在函数名称上下功夫,多积累经验。P116 提炼函数

2、函数应该尽量选择单一返回值。P116 提炼函数

3、间接性可能带来帮助,但非必要的间接性也总是给人不舒服。P117内联(即消除)函数

4、默认情况下,我们应该总是将临时变量定义为final(C++中为const). P124引入解释性变量

注意:我通常还会在另一种情况下使用这个重构手法,当我需要引用一个 map 或 hastabel 的key或value (特别是通过迭代器)时,为了使代码更易读,我会选择将key或value赋给一个临时性变量。

5、 “一个实体只能有一个责任”!因此,函数中的变量应该只承担一个职责。如果一个变量在函数中被赋值了多次,则说明它承担了不只一个责任。P128分离临时变量

6、移除对参数的赋值:对输入参数赋值通常不是一个好做法。当然,对于使用“出参数”的语言(例如C++),我也会尽量少使用出参数。P132移除对参数的赋值

注意:请尽量只以return方式返回一个值。如果需要返回的值不止一个,那么看看是否可以把需要返回的一大堆数据变成一个对象进行返回,或者干脆为每个返回值设计对应的一个独立函数。

7、以函数对象取代函数(Replace Method With Method Object)几乎可以拆解任何大型函数。P135以函数对象取代函数

注意:当然, Replace Method With Method Object重构手法产生的新类通常只有一个实例(对象),这和《代码大全》P146页中“只有一个实例的类是值得怀疑的”相悖。暂且,我们将之看作一个特例吧。疑问

8、 随着对问题的更多了解,我们往往会发现,在原先的做法之外,还有更简单的解决方案。这时我们必须有壮士断腕的豪气,删掉旧算法,使用新算法。P139替换算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值