有些程序员可能过于追求 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都会进行判断
if else if是只要有满足条件的,就不再对之后的else if进行判断
举个简单的例子
a = 2;if(a==1) c=1;if(a==2) c=2;if(a%2==0) c=3;最终结果c=3a=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
官方QQ群号码:922069959
点击链接加入群聊【路由器交流】:https://jq.qq.com/?_wv=1027&k=5AKdmZP
《本文》有 0 条评论