PHP中大量使用if-else起到的反作用if-else和else if的区别写法起到的不同作用
大量使用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
点击链接加入群聊四群:722808830
点击链接加入群聊三群:751529538(已满)
点击链接加入群聊二群:376877156(已满)
点击链接加入群聊一群:622891808(已满)
饿了么红包
本站附件分享,如果附件失效,可以去找找看