坏味道:过长函数
即使在编程的洪荒阶段,程序员们也都可以意识到:越小的函数越容易阅读和理解。
过长的函数往往代表着怎么做占据函数的大部分篇幅,稍好一些的编码者会添加部分注释,去告诉阅读者这段代码在做什么。
过长函数的本质,其实就是 做什么 和 怎么做 没有拆分开来,是 意图 和 实现 的耦合, 是过程化思维占据主导,而抽象化思维缺失的结果。
过长函数的反向:
在接触到由“小函数”组成的代码库时,程序员常常会感觉“计算都没有发生”,程序中充满了无穷无尽的委托调用。
阅读函数内容时,一个个拥有良好命名小函数向阅读者描述了他们的意图,阅读完毕即可知道函数在做什么。而阅读者希望了解细节时,则可以进入函数内部查看函数的实现,了解函数是怎么做。
阅读代码就和阅读文章一样便捷。
小函数带来的好处:
- 更好的阐释力 (小函数要有良好的命名)
- 更易于分享
- 更多的选择
过长函数的识别方式:
- 每当遇到代码中有注释,在描述代码无法诉说的信息,
- 代码行数超过 15 行
过长函数的重构手法:
- 提炼函数
- 已查询取代临时变量
- 引入参数对象
- 保持对象完整
- 已命令取代函数
- 分解条件表达式
- 以多态取代条件表达式