Don’t hurt yourself

减少函数参数

函数参数过多,是复杂度失控的信号。

当一个函数不断需要增加参数时,不要急着继续加参数,而应先检查:

  • 函数是否承担了过多职责,需要拆分;
  • 多个参数是否属于同一个概念,可以封装成结构体/参数对象;
  • 不同使用场景是否应该用不同函数、重载或模板表达;
  • 只有以上方式都不合适时,才考虑增加新参数。

最终目标是:

减少参数数量,降低调用者的理解成本,让函数职责和抽象边界更加清晰。

例如:

startRecord(channel, stream, type, alarm, overwrite,
            audio, duration, priority, callback);
//应该把相同概念的参数提取为结构体
struct RecordOptions {
    RecordType type;
    bool audio;
    int duration;
    int priority;
};