美文网首页TDD(测试驱动开发)技艺实践敏捷转型
推荐一招:使用“无副作用函数”改良代码

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

作者: 而立不惑之年 | 来源:发表于2017-11-13 17:51 被阅读71次

    说明


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

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

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

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

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

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

    举例

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

    修改前代码 修改后代码

    小结


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

    相关文章

      网友评论

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

      本文链接:https://www.haomeiwen.com/subject/pgizmxtx.html