作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
可以使用哪些控制结构来代替多个嵌套 IF 语句。
例如:
function change_password($email, $password, $new_password, $confirm_new_password)
{
if($email && $password && $new_password && $confirm_new_password)
{
if($new_password == $confirm_new_password)
{
if(login($email, $password))
{
if(set_password($email, $new_password))
{
return TRUE;
}
}
}
}
}
该函数的使用方式如下:
if(!change_password($email, $password, $new_password, $confirm_new_password)
{
echo 'The form was not filled in correctly!';
exit;
}
我这样调用我的所有函数,我想知道我的编码风格是否有问题。我有疑问,因为如果我遵循这个设计,那么这意味着我编写的每个函数都将与 IF 嵌套,检查每个阶段是否有错误。这是其他人做的吗?
我没有看到很多其他脚本是这样写的,嵌套的 IF 形成一个三角形,并且只在中间有所需的结果。如果没有达到中间,那么就会出现问题。
这是一个好的函数结构吗?
最佳答案
嵌套太深通常是一个坏主意 - 这是意大利面条逻辑并且难以遵循。由于每个验证步骤都取决于前一个阶段是否成功,因此根本不要嵌套 - 只需在某个阶段失败时退出即可:
function change_password(blah blah blah) {
if (!$condition1) {
return false;
}
if (!$condition2) {
return false;
}
etc....
// got here, must have succeeded
return true;
}
这清楚地表明了逻辑顺序是什么。
关于PHP - 嵌套 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11839268/
我是一名优秀的程序员,十分优秀!