我想知道何时使用多个嵌套的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;
}
这使得它明确地清楚了逻辑序列是什么.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。