1. 为什么过长函数是代码坏味道
过长函数往往意味着函数功能不单一,函数抽象层次混乱,可能会引发的问题:
- 代码抽象层次不同,没法快速看懂该函数的处理流程,增加了代码的理解成本和维护成本
- 过长函数更容易导致 bug,尤其是修改的时候。因为函数干的活不单一,函数过长, 开发容易遗漏该函数的一些点,导致引入新的bug。
2. 重构过长函数的目标
重构过长函数的目标:
- 根据
职责单一原则
,一个函数应该只做一件事,最大化提升函数复用能力 - 一个函数,所做的事情应该都在一个抽象层次,降低人大脑的理解成本,从而提升代码可读性和可维护性,建议一个函数不超过50行
3. 重构过长函数的技巧
重构过长函数步骤:
- 理解原函数,建立测试防护网
- 对函数重新抽象,递归抽提函数,确保每个函数功能单一,函数内代码处于同一抽象层次
技巧:
-
抽提函数:
Ctrl + Alt + M
-
移动函数:
F6
或Ctrl + Alt + Shift + T -> Move Instance Method
或鼠标右键 -> refactor -> Move Instance Method
-
通过查询取代变量:
Ctrl + Alt + n
或Ctrl + Alt + Shift + T -> Inline Variable