Dan*_*ugg 10 php validation standards arguments function
我只是在询问参数验证语法的标准实践.我目前正在使用PHP,但任何被认为是平台/语言无关的解决方案都会很棒.
截至目前,我知道两种非常常见的语法.例如(我的偏好):
function foo($a, $b, $c){
if(!$a){ throw new Exception(); }
if($b < 0){ throw new Exception(); }
if(!check($c)){ throw new Exception(); }
//do stuff with $a, $b, and $c
}
Run Code Online (Sandbox Code Playgroud)
另外:
function foo($a, $b, $c){
if($a){
if($b >= 0){
if(check($c)){
//do stuff with $a, $b, and $c
}else{ throw new Exception(); }
}else{ throw new Exception(); }
}else{ throw new Exception(); }
}
Run Code Online (Sandbox Code Playgroud)
在任何情况下,如果有人知道文档说明任何类型的标准,或相关的常见做法,我将非常感谢参考.
当然,个人偏好和意见更受欢迎,但推理您的选择将是一种资产.
我更喜欢你给出的前一个例子有很多原因:
if
陈述的性质,先决条件会降低.我更喜欢在方法开始时立即拥有所有前提条件按合同设计是确保满足某些条件(通常通过断言)的一般方法,例如:
Assert.IsNotNull($a, '$a must not be null');
Run Code Online (Sandbox Code Playgroud)
如果断言失败,则抛出指定消息的异常.
使用相同的方法,您可以在方法结束时(后置条件)进行某些断言,以确保方法按预期执行.