Don’t hurt yourself
减少函数参数
函数参数过多,是复杂度失控的信号。
当一个函数不断需要增加参数时,不要急着继续加参数,而应先检查:
- 函数是否承担了过多职责,需要拆分;
- 多个参数是否属于同一个概念,可以封装成结构体/参数对象;
- 不同使用场景是否应该用不同函数、重载或模板表达;
- 只有以上方式都不合适时,才考虑增加新参数。
最终目标是:
减少参数数量,降低调用者的理解成本,让函数职责和抽象边界更加清晰。
例如:
startRecord(channel, stream, type, alarm, overwrite,
audio, duration, priority, callback);
//应该把相同概念的参数提取为结构体
struct RecordOptions {
RecordType type;
bool audio;
int duration;
int priority;
};