我发现有很多 if-else 语句,尤其是嵌套的 if else 语句,这些语句使我的代码可读性降低。如何减少 PHP 中 if else 语句的数量?
我的提示如下: 1.在合适的时候使用switch语句;2.在可行的情况下使用exit()语句;3、在可行的情况下使用三元语句;
是否有其他技巧可以减少 if else 语句,尤其是嵌套的 if-else 语句?
我发现有很多 if-else 语句,尤其是嵌套的 if else 语句,这些语句使我的代码可读性降低。如何减少 PHP 中 if else 语句的数量?
我的提示如下: 1.在合适的时候使用switch语句;2.在可行的情况下使用exit()语句;3、在可行的情况下使用三元语句;
是否有其他技巧可以减少 if else 语句,尤其是嵌套的 if-else 语句?
尽可能使用“提前返回”以减少嵌套深度。尝试使用布尔表达式评估。
例子:
function foo($param)
{
$ret = false;
if(userIsLoggedIn()) {
if(is_array($param)) {
if($param['count'] > 0) {
$ret = true;
}
else {
$ret = false;
}
}
}
return $ret;
}
你可以这样重写:
function foo($param)
{
if(!userIsLoggedIn()) return false;
if(!is_array($param)) return false;
return $param['count'] > 0;
}
将您的代码重构为更小的工作单元。太多的条件逻辑是代码异味,通常表明您的函数需要重构。
使用三元运算符,重构代码,编写一个函数或一个类来执行所有必要的 if else 语句。
我编写了大量的代码,这些代码充满了不断发展的业务逻辑,并且需要每隔一天修改一次。肯定有助于我跟上修改的两个技巧是:避免所有其他语句并尽快返回/退出。永远不要深入嵌套 -> 创建子例程/函数。
用否定的 if 语句替换所有 else 语句使您的代码更容易从上到下阅读(条件和代码块的接近度):
# business logic block
if ( $condition ) {
# do something
# code code code
} else {
# code code code
return;
}
# refactored:
if ( ! $contition ) {
# code code code
return;
}
if ( $condition ) {
# code code code
}
其次,尽快返回/退出。我的意见当然是,但是当您已经确定子例程的结果时,尤其是当您想从上到下阅读代码时,我看不出运行任何额外条件/测试的意义。消除所有歧义使事情变得更简单。
总而言之,我喜欢避免使用 else,尤其是在长长的 BL 列表中。知道结果后立即返回。如果嵌套级别大于 2,则创建子例程/函数。
多态性也可以摆脱一些,尽管很难实现减少 PHP 中的 if/else,因为它不是类型安全的......
ternary operator
您可以使用或null coalescing operator
这样减少 if/else 代码的数量:
使用三元运算符:
Variable = (Condition) ? (Statement1) : (Statement2);
$age = 20;
print ($age >= 18) ? "Adult" : "Not Adult";
输出:
Adult
通过使用空合并运算符:
// fetch the value of $_GET['user'] and returns 'not passed'
// if username is not passed
$username = $_GET['username'] ?? 'not passed';
print($username);
print("<br/>");
// Equivalent code using ternary operator
$username = isset($_GET['username']) ? $_GET['username'] : 'not passed';
print($username);
print("<br/>");
// Chaining ?? operation
$username = $_GET['username'] ?? $_POST['username'] ?? 'not passed';
print($username);
输出:
not passed
not passed
not passed