美文网首页TDD(测试驱动开发)
重构坏味道:过长的函数

重构坏味道:过长的函数

作者: Ps天花乱坠 | 来源:发表于2018-01-23 15:19 被阅读0次

    过长的函数

    症状

    一个方法包含了太多的代码行,做了很多不同的事情。


    Long Method

    病因

    在早期编程语言,调用子程序需要额外开销,所以不愿意使用小函数(现在OO语言几乎已经完全免除了进程内的调用动作开销),在想法上认为新功能在原函数上修改比添加新函数开销小,由于编写代码比阅读代码更容易,所以任何新的需求都是在原有方法里添加,这种 坏味道 一直未被注意,直到方法变成一个做太多事情的丑陋野兽。

    导致的健康问题

    函数过长会令程序变得很难理解,所以需要花费大量的时间去阅读理解函数在做什么,并且修改起来影响范围可能也会很大,这样无形中增加了维护成本和添加新需求发生bug的几率。

    治疗

    每当感觉需要注释说明点什么的时候,就可以把需要说明的东西写进一个独立函数中,并以其用途命名,哪怕函数名比实现还要长,关键是要说明"用途"

    Long Method Refactoring
    • 无局部变量

    运用 Extract Method 按照用途提炼函数即可。
    IntelliJ IDEA 练习视频

    • 有局部变量

    如果发现局部变量只是保存某一个表达式的运算结果,那么运用查询函数Replace Temp with Query 替换使结构清晰后,再运用 Extract Method
    提炼按照用途函数即可。
    如果提炼的新函数对参数赋值了,运用 Remove Assignments to Parameters
    IntelliJ IDEA 练习视频

    康复

    • 每个函数各司其职,通过观察函数名字就知道做了什么事,而不需要具体看代码实现。
    • 函数短小简单,理解起来很快,让重复代码无处可藏
    • 如果优化性能问题,清晰短小易懂的代码,可以更快找到有效的重构代码的方法


      Long Method After Refactoring

    相关文章

      网友评论

        本文标题:重构坏味道:过长的函数

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