在编写小函数时,我经常会遇到这样的情况,即某些参数被赋予一个函数,该函数本身只将它们传递给不同的小函数来实现其目的.
例如(C#-ish Syntax):
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();
}
Run Code Online (Sandbox Code Playgroud)
因此,参数不是在被调用函数内部使用,而是在执行该作业的小函数的深处"某处".
那么什么时候最好检查我的param-Object是否为空?
签入功能A时:
Pro: - 通过使用其他方法没有任何开销,这些方法最终将无效,因为object为null.
Con: - 我的语法很棒FunctionA被丑陋的验证码弄脏了.
仅在使用param-object时进行检查:
亲: - 我的语法很精彩的功能A很高兴阅读:)
缺点: - 通过调用方法会产生开销,因为param-object为null,所以不会做任何事情. - 进一步的缺点我现在不考虑.
总是把它放在尽可能远的调用堆栈中,这样如果你以后重构代码和其他东西调用除DoA之外的DoD,你就可以进行检查,而不必重新进行参数检查.在大多数情况下,小的空检查和可能的一些额外的方法调用的开销将是微不足道的,并且多做几次检查不是你应该担心的事情.