我发现有很多if-else语句,特别是嵌套if else语句,这些语句使我的代码不易读取。如何减少PHP中if else语句的数量?
我的提示如下: 1.在合适的情况下使用switch语句; 2.在可行时使用exit()语句; 3.在可行时使用三元语句;
是否有其他提示可以减少if else语句,尤其是嵌套的if-else语句?
答案 0 :(得分:20)
尽可能使用“早期返回”以减少嵌套深度。尝试使用布尔表达式求值。
示例:
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;
}
答案 1 :(得分:18)
将您的代码重构为较小的工作单元。条件逻辑过多是代码嗅觉,通常表明您的函数需要重构。
答案 2 :(得分:9)
答案 3 :(得分:3)
使用三元运算符,重构代码,编写函数或执行所有必要if else语句的类。
答案 4 :(得分:1)
多态性也可以摆脱一些,虽然在PHP中减少if / else因为它不是类型安全而更难实现......
答案 5 :(得分:1)
我处理了许多代码,这些代码充满了不断发展的业务逻辑,需要每隔一天进行修改。两个提示当然有助于我跟上修改:避免所有其他语句并尽快返回/退出。永远不要深入嵌套 - >创建子例程/函数。
用ifated语句替换所有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
}
其次,尽快退货/退货。我的观点当然,但是当你已经确定子程序的结果时,我没有看到运行任何额外条件/测试的重点,特别是当你想从上到下阅读代码时。消除所有歧义会使事情变得更简单。
总而言之,我喜欢避免使用其他特别是在BL的长列表中。一旦知道结果就立即返回。如果嵌套级别大于2,则创建子例程/函数。