函数

PPG007 ... 2021-12-26 About 2 min

# 函数

# 短小

  • 函数不应该大到足以容纳嵌套结构。
  • 函数的缩进层级不该多于一层或两层。

# 只做一件事

  • 要判断函数是否不止做了一件事,就是看是否能再拆出一个函数,该函数不仅只是单纯地重新诠释其实现。
  • 只做一件事的函数无法被合理地切分为多个区段。

# 每个函数一个抽象层级

  • 保证同一个函数中的方法抽象程度的相近,从高度抽象慢慢向下到具体实现,这样就能实现代码自顶向下阅读。

# 使用描述性的名称

  • 名称不必担心太长,要使名称中的多个单词容易读。
  • 函数名应当是动词名词的形式,解释函数的作用。
  • 命名方式要保持一致,近义词选定一个就不应再使用其它。

# 函数参数

  • 参数列表不宜过长。
  • 参数越多测试越复杂。
  • 如果一个函数的逻辑收到参数中某个标志的影响,那么应当拆分这个函数,去掉这个标记。
  • 多元函数要注意参数的顺序,或者想方法变回一元函数。
  • 当函数的参数过多时,应当考虑将参数封装成对象。

# 无副作用

  • 函数的实际行为应当与名字描述的一致,不应当有其他行为。
  • 如果一个函数必须要改变一下东西,那么就修改它所拥有的属性即可。

# 分隔指令与询问

一个函数要么做什么事,要么回答什么事,不要既回答(返回值)又去做事(修改),这回导致歧义。

# 使用异常替代返回错误码

  • 当遇到错误时,不应当立即在逻辑中处理,抛出异常在异常处理中集中处理,将错误处理代码从主路径代码中抽离出来。
  • try、catch代码块可以从一个函数中提取出来单独组成一个函数。
  • 使用异常可以避免使用错误枚举类,在扩展时只要扩展异常类即可。

# 别重复自己

  • 当一个算法在多个方法中都被使用时,如果需要修改算法就需要修改多个方法,应当将重复的部分抽离出来。

# 其它

  • goto只有在大函数中才有意义,小函数避免使用。
  • 不必试图在最开始就将所有代码设计的完美无缺,编写完后再仔细打磨。
Last update: December 26, 2021 13:38
Contributors: PPG007