level 15
投江的鱼
楼主
本来不想发帖的,因为一直不怎么喜欢发帖。不写太多,写太多就暴露了...
看到吧里很多人都是这样,多层逻辑嵌套,看似条例清晰、逻辑关系明了。实际上读起来真的很费力
看个最简单的例子,一吧友A想要发一个帖子宣传xx产品,需要征求所有吧主(bz1,bz2)一致同意后才可以发帖。
有人可能会这样写

看上去很自然. 逻辑也很清楚,bz1同意了之后bz2再同意肯定就没啥问题了.
有人会这样写

这样看上去逻辑更加清楚了,两个吧主同时同意.
还有第三种 第四种



以上看上去都行得通,那么现在又多个1个吧主呢?10个呢?50个呢?
第一个嵌套50个if - else
第二个写49个&&
第三个写50个if
第四个,变成50的数组。而且,同时可以分离出所有bz
$bz = [$bz1,$bz2];
function getPostAgree()
{
global $bz;
$agree = false; //flag
$agree = !in_array("disagree", $bz)
return $agree;
}
如何改进?
- 嵌套逻辑用平行逻辑代替
- 使用表驱动减少判断
- 不是必要的if-else,能不else就别else,不要if-elseif-elseif...-elseif-else
- if-return 代替 if-else
.....
2018年02月26日 12点02分
1
看到吧里很多人都是这样,多层逻辑嵌套,看似条例清晰、逻辑关系明了。实际上读起来真的很费力
看个最简单的例子,一吧友A想要发一个帖子宣传xx产品,需要征求所有吧主(bz1,bz2)一致同意后才可以发帖。
有人可能会这样写

看上去很自然. 逻辑也很清楚,bz1同意了之后bz2再同意肯定就没啥问题了.有人会这样写

这样看上去逻辑更加清楚了,两个吧主同时同意.还有第三种 第四种



以上看上去都行得通,那么现在又多个1个吧主呢?10个呢?50个呢?第一个嵌套50个if - else
第二个写49个&&
第三个写50个if
第四个,变成50的数组。而且,同时可以分离出所有bz
$bz = [$bz1,$bz2];
function getPostAgree()
{
global $bz;
$agree = false; //flag
$agree = !in_array("disagree", $bz)
return $agree;
}
如何改进?
- 嵌套逻辑用平行逻辑代替
- 使用表驱动减少判断
- 不是必要的if-else,能不else就别else,不要if-elseif-elseif...-elseif-else
- if-return 代替 if-else
.....