美文网首页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

相关文章

  • 重构坏味道:过长的函数

    过长的函数 症状 一个方法包含了太多的代码行,做了很多不同的事情。Long Method 病因 在早期编程语言,调...

  • 重构:改善既有代码的设计

    书中的简单实用的重构方法基本上都是针对代码的Bad Smell,书中常见的坏味道:重复代码,过长函数,太大的类...

  • 重构坏味道:过长的消息链

    过度耦合的消息链 症状 如果你看到一个对象请求另一个对象,然后在向后者请求另一个对象,然后在请求另一个对象类似:g...

  • 重构坏味道:过长的参数列

    过长的参数列 症状 一个函数拥有大于3个甚至更多的参数,而且调用链上的每个函数可能都需要你传递不同的参数,或者某几...

  • 多长的函数才算过长的函数?

    在《重构》中,有一个代码坏味道叫 过长的函数。这听起来真是一个不负责任的描述,多长的函数才算长?老马觉得长,可能K...

  • 2019-02-17 《重构—改善既有代码的设计》手法汇总

    重构手法 代码的坏味道 以下内容来自《重构—改善既有代码的设计》 一、重新组织函数 1、Extract Metho...

  • 坏味道与重构手法

    坏味道(英文)坏味道(中文)页码常用重构Alternative Classes with Different In...

  • 《徐昊-TDD项目实战70讲》学习笔记 -- Day 4

    02|TDD演示(2):识别坏味道与代码重构 识别坏味道 利用多态替换条件分支 TDD 的红 / 绿 / 重构循环...

  • 架构重构实践

    局部架构重构 1. 架构重构的驱动力 坏味道驱动 规划驱动 架构组织与架构过程中的重构 2. 坏味道如何判断 以下...

  • 重构-坏的味道

    Duplicated Code(重复代码) 场景与处理 同一个类的两个函数含有相同的表达式Extract Meth...

网友评论

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

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