良好的防御性编程要求我们检验函数的参数是否合法,但是检验过程放在函数体内好呢,还是用的时候放在函数体外好呢?
1.函数体外参数检验
优点:逻辑清晰;程序高效(避免额外调用开销)
缺点:代码冗余;安全度不高(忘记检验)
2.函数体内参数检验
优点:代码清爽;安全度高,任何情况下的调用都可以放心
缺点:调用开销大(额外的调用);容易产生重复检验
综合考虑,对于安全度需求高的函数,我们采用函数体内参数检验;对于频繁使用非法参数调用的情况,我们应采用函数体外参数检查,避免过度调用