在客户端看不到的内部接口中测试有效参数

Testing for valid arguments in the internal interfaces that client can't see

在函数实际处理开始之前测试函数中的参数始终是一个好习惯。

但是对于内部函数和接口来说是这样吗?我的老板(我的技术负责人)告诉我,你不需要检查内部接口中的那些东西,因为前端总是将它们过滤掉。

那是真的吗,假设一个协议,当协议有很多层,并认为该协议是我们的内部协议时,是否可以仅仅因为我们仅在内部使用该协议而忽略这些检查?

But is that true for internal functions and interfaces ? My boss( my tech lead ) told me that you don't need to check for those things in internal interfaces, because the front end is always filtering them out.

你的老板是对的,这应该是前端代码的责任,一次又一次地进行检查是没有意义的(这会损害性能)。

可能最好的做法是使用 assert() 进行参数检查。因此,您不必在调试和测试阶段依赖前端功能,但生产代码的检查将被删除。


我个人不喜欢 assert() 方法的一件事是,它对调试非常不友好。
捕获异常并检查调用堆栈以查看罪魁祸首要容易得多。也许更好的想法是编写您自己的 assert() 宏,它不会调用 abort(),但会抛出一个适当的异常。与可以从生产代码中删除的原始 assert() 相同。