TDD(测试驱动开发)技艺实践敏捷转型

推荐一招:使用“无副作用函数”改良代码

2017-11-13  本文已影响71人  而立不惑之年

说明


无副作用函数,是指那些不使用类的成员,不使用全局变量变化的函数。

在进行代码重构时,因为:

--可读性:屏蔽一些信息(例如细节实现或概念封装),来提高可读性

--降低圈复杂度:为了代码复杂度,抽取的一些函数

等改良性设计,而抽取了不少功能比较简单的函数。如果对这些函数进行改造,便可形成无副作用的函数。无副作用的函数,不归属于某个类,可以单独cpp中实现。注意的一点是实现必须放在引用的前面。

好处是很明显的:由于不修改头文件,不会因为重构来修改类的定义(甚至使类附加很多额外信息,使类功能腐化),从影响外部使用(即使是私有函数,外部也需要重新编译);提取的无副作用函数方便TDD单元测试,避免霰弹式修改,无法进行单元测试困境

举例

使用无副作用函数改良代码,只需要修改cpp,无需修改头文件。如下例子:

修改前代码 修改后代码

小结


在维护已经存在大量代码的系统时,可以通过提取副作用函数的思路,来改良代码。不仅可以显露系统主干,便于理解系统代码;另外提取函数很容易进行单元测试,从而保证重构的质量。

上一篇 下一篇

猜你喜欢

热点阅读