gpt4 book ai didi

php - 函数/方法参数验证标准

转载 作者:可可西里 更新时间:2023-10-31 22:49:07 25 4
gpt4 key购买 nike

我只是想了解参数验证语法的标准做法。我目前正在使用 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

}

或者:

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(); }
}

无论如何,如果有人知道说明任何类型标准或与此相关的常见做法的文档,我将不胜感激。

当然,个人偏好和意见更受欢迎,但对您的选择进行推理将是一项 Assets 。

最佳答案

出于多种原因,我更喜欢您给出的前一个示例:

  • 代码不会像嵌套 if 语句那样不必要地缩进。
  • 嵌套的 if 语句会给逻辑流添加一堆复杂的分支,变得难以管理
  • 根据 if 语句的性质,前提条件会降低。我更喜欢在方法开始时立即拥有所有先决条件

按契约(Contract)设计是确保满足某些条件(通常通过断言)的一般方法,例如:

Assert.IsNotNull($a, '$a must not be null');

如果断言失败,将抛出异常并显示指定消息。

使用相同的方法,您可以在方法的末尾(后置条件)进行某些断言,以确保方法按预期执行。

关于php - 函数/方法参数验证标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3393616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com