验证函数输入参数的最佳位置在哪里:在调用方中还是在函数本身中?
因为我想改善自己的编码风格,所以我尝试找到此问题的最佳实践或一些规则。何时何地更好。
在我以前的项目中,我们曾经检查并处理函数中的每个输入参数(例如,如果它不为null)。现在,我在这里已经在一些答案以及《实用程序员》一书中读到,输入参数的验证是调用者的责任。
因此,这意味着我应该在调用函数之前验证输入参数。调用该函数的任何地方。这就提出了一个问题:不是在调用函数的所有地方都产生了检查条件的重复吗?
我对空条件不感兴趣,但对任何输入变量的验证(sqrt
函数的负值,被零除,状态和邮政编码的错误组合或其他任何东西)都不感兴趣。
有一些规则如何决定在哪里检查输入条件?
我在考虑一些争论:
- 当无效变量的处理方式可能有所不同时,最好在调用方进行验证(例如,
sqrt()
函数-在某些情况下,我可能想使用复数,因此我在调用方中处理条件) - 当每个调用者的检查条件都相同时,最好在函数内部进行检查,以避免重复
- 调用方中输入参数的验证仅在使用此参数调用许多函数之前进行。因此,在每个函数中验证参数无效
- 正确的解决方案取决于具体情况
我希望这个问题不能与其他任何问题重复,我搜索了这个问题,发现了类似的问题,但是他们没有确切提及此案。