当编写小函数时,我经常遇到这样的情况:将一些参数传递给一个函数,该函数本身只将它们传递给不同的小函数以达到其目的。
例如(C# 语法):
public void FunctionA(object param)
{
DoA(param);
DoB(param);
DoC(param);
// etc.
}
private void DoA(object param)
{
DoD(param);
}
private void DoD(object param)
{
// Error if param == null
param.DoX();
}
所以,参数并不在被调用的函数内部使用,而是在执行任务的小函数的深处“某个地方”使用。
那么什么时候最好检查我的参数对象是否为空呢?
在FunctionA中进行检查:
优点: - 通过进一步的方法使用,没有额外的开销,因为对象是空的。 缺点: - 我那句语法精美的FunctionA被丑陋的验证代码弄脏了。
只有在使用param-object时进行检查:
优点: - 我那句语法精美的FunctionA保持阅读的乐趣 :)
缺点: - 通过调用将什么都不做的方法,会因为param-object为空而产生额外的开销。 - 其他缺点我暂时想不到。