如何减少PHP中if-else语句的数量?
我发现有很多if-else语句,尤其是嵌套if语句时,这些语句使得我的代码不易读。如何减少PHP中if语句的数量?如何减少PHP中if-else语句的数量?
我的提示如下: 1.在合适的时候使用switch语句; 2.在可行时使用exit()语句; 3.在可行时使用三元语句;
是否有其他技巧可以减少if else语句,尤其是嵌套的if-else语句?
将您的代码重构为更小的工作单元。过多的条件逻辑是代码异味,通常表明你的函数需要重构。
使用三元运算符,重构你的代码,编写一个函数或者一个完成if语句所需的类。
多态性可以摆脱一些的为好,allthough更难实现减少的if/else在PHP,因为它不是类型安全的...
尝试使用“早日重返”如果可能的话,以减少嵌套深度。尝试使用布尔表达式评估。
例子:
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;
}
我工作的很多代码都充满了不断发展的业务逻辑,需要每隔一天修改一次。两个提示确实帮助我跟上修改:避免所有其他语句,并尽快返回/退出。永远不要深入嵌套 - >创建子例程/函数。
与否定更换所有else语句if语句使代码更易于阅读从上到下(在condtion的接近性代码块):
# 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,则创建子例程/函数。
这当然可以重构为: – 2011-10-01 20:20:18
+1这是非常重要的,因为它可以减少几KB的文件大小! – Xeoncross 2009-11-26 15:22:29
+1也适用于继续,休息,抛出。您通常可以保持较低的循环复杂度,从而使代码更具可读性。 – NikiC 2011-09-25 11:57:05
另外我个人只会使用'return userIsLoggedIn()&& is_array($ param)&& $ param ['count']> 0;'这里。它简短而简洁。 – NikiC 2011-09-25 12:00:02