我支持public接口检查,其他的在测试阶段添加assert或打印Trace信息就好了。
反复检查室思路不清晰的一种表现。
如果是分层架构,每一次对外接口必须检查,以避免数据传输途中异常或被修改引起的问题。
比如Data Access层通常分两小层,High Level和Low Level,High Level必须做输入检查。
建议写在内部函数中,因为如果在写public函数中,多处调用就要多次检测,移植性不好。
建议写在public函数中吧,这样就相当于刚调用的时候(相当于输入)已验证了,在内部函数中你随便怎么计算都可以不用考虑参数是否不是自己希望的那样,开发可能会方便些。
这种应该都有写的,如果该模块以后会给其他地图调用,很难避免有非法参数的问题
建议在需要用到的地方检测
比方说:
public void F1(Param p)
{
F2(p);
F3(p);
}
private void F2(Param p)
{
p.XX1 = some;//此处要求p不为 null,应检查
}
private void F3(Param p)
{
//F2(p) blablabla
}
另外,界面用户输入都应检查
首先,安全重要还是性能重要?
如果是安全重要的话,内部函数里面一堆assert,这是无疑的.
如果是性能重要,那我不知道啥办法.
你的意思就是尽量减少检测参数的次数吧。
我感觉,如果在最外层添加检测,那么内部就不需要重复检测,这样或许就能减少检测的次数。如果你在外层不检测,那么每一个内层的函数都要分别检测。这样似乎就增加检测的工作量。