何时检查功能/方法参数?

Inn*_*nno 3 methods function

在编写小函数时,我经常会遇到这样的情况,即某些参数被赋予一个函数,该函数本身只将它们传递给不同的小函数来实现其目的.

例如(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,所以不会做任何事情. - 进一步的缺点我现在不考虑.

Ste*_*han 6

总是把它放在尽可能远的调用堆栈中,这样如果你以后重构代码和其他东西调用除DoA之外的DoD,你就可以进行检查,而不必重新进行参数检查.在大多数情况下,小的空检查和可能的一些额外的方法调用的开销将是微不足道的,并且多做几次检查不是你应该担心的事情.