我有一个投票系统,允许用户为项目投票。现在,我首先检查用户是否已登录,然后检查他们是否已经投票。我想知道是否有更好的方法来做到这一点,因为有人告诉我嵌套 if 语句是应该避免的。
我的代码:
if ($loggedIn) {
if($row['voted']){
You Already voted
}else{
<a href="#">Agree</a>
}
}else{
Please Register
}
嵌套
if( ... ){ ... }else{ ... }
语句很好,只要它们符合逻辑并且易于阅读/维护。另一种选择是检查你的论点的逻辑,看看是否可以用更简单的方式表达它们。
例如,您提供的代码可以表示为:
if( !$loggedIn ){
echo 'Please Register';
}elseif( $row['voted'] ){
echo 'You Already voted';
}else{
echo '<a href="#">Agree</a>';
}
事情没那么简单。你的例子很简单,但其他情况则不然。在您的示例中,很容易跟踪发生的情况,因此可以使用嵌套的 if 语句。在更复杂的代码中,深度嵌套的语句会导致代码难以维护。与编程的许多事情一样,它会因情况而异,您需要根据具体情况做出决定。
总体来说还好。您希望避免过于复杂的嵌套 if 语句
在这种情况下还好,事实上大多数情况都是如此。只有当你有很多嵌套时,才会出现这个问题,因此它会变得难以阅读,你可能会忘记一些东西,但这就是可读性,使用嵌套 if 语句的逻辑没有任何问题。
不好。
做一个永不筑巢者:
if (!loggedIn) {
return 'Please Register';
}
if(!!row.voted){
return 'You Already voted';
}
return 'agree';
大多数建议都是在假设您的团队是以下任一者的情况下给出的:
现实(由于招聘市场条件)是您的团队的时间和经验会很差。
演示可扩展和异步的方法,使代码长期保持可读性。
避免“编码高尔夫”的诱惑