PHP中大量使用if-else起到的反作用if-else和else if的区别写法起到的不同作用

2018-08-08
0评论
/
1977阅读
爱搜啊

大量使用if-else反作用

PHP中大量使用if-else起到的反作用

有些程序员可能过于追求 if-else 对代码优化的效果, 却忽略了其带来的对代码清晰度的反作用. 假设这样一个功能, 根据用户的等级显示不同的页面. 如果用户的等级大于等于 10, 他能看到的东西和普通用户(等级小于10)不同, 代码如下:

echo "欢迎您, ";
if(level > 10){
echo "高级用户!";
}else{
echo "用户!"
}
// ... 大段代码
echo '<a href="#">个人信息</a>';
if(level > 10){
echo "审核文章!";
}else{
echo "发表文章!"
}
echo "...";

我们看到, 随着功能的继续, 不断地出现 if-else, 可能是十几个. 虽然在 if-else 之外的代码得到了重用, 也即冗余度降低了, 但是, 充斥各处的判断不是也极大地影响了代码的清晰度吗?

如果我 copy-paste 一份公用代码(不可过于极端地反对复制粘贴), 就可以只使用一个 if-else:

if(level > 5){
echo "欢迎您, 高级用户!";
// ... 大段代码
echo '<a href="#">个人信息</a>';
echo "审核文章!";
echo "...";
}else{
echo "欢迎您, 用户!";
// ... 大段代码
echo '<a href="#">个人信息</a>';
echo "发表文章!";
echo "...";
}

这样, 优化后全部的代码只有一个分支, 才是符合人思维的逻辑, 虽然代码量扩大了近一倍. 而且, "大段代码"可以封装成函数, 优化后的代码在行数和冗余度上不一定增加.

所以, 不要把冗余度作为代码优化的唯一条件, 更不要把 if-else 作为代码重用的唯一方法!

当然还有人问了

写很多个if语句和if-else if-else if有什么区别?

多个if是所有的if都会进行判断

if else if是只要有满足条件的,就不再对之后的else if进行判断

举个简单的例子

a = 2;
if(a==1) c=1;
if(a==2) c=2;
if(a%2==0) c=3;
最终结果c=3
a=2;
if(a==1) c=1;
else if(a==2) c=2;
else if(a%2==0) c=3;
最终结果c=2

这就说明,上面的是所有的if都是要逐条判断的

下面的判断符合了,就跳过下面else if直接显示结果。

还有下面这种方法,比较容易理解

1,从字面上理解if为如果,就是如果这种情况,如果那种情况。

2,else if 不是上一个条件的前提下,如果是这个条件。

3,区别1:if无论是否满足条件都会向下执行,直到程序结束,else if 满足一个条件就会停止执行。

4,区别2:由于if都会执行一遍,则可能会同一个需要判断的事件,会进入2个if语句中,出现错误,而else if就不会发生这样的事情。

摘自:http://www.ideawu.net/blog/archives/518.html


本站附件分享,如果附件失效,可以去找找看

诚通网盘附件百度网盘附件


于2018-08-08发布