2010-06-22

if-else对优化代码冗余度的反作用

Views: 17555 | 8 Comments

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

echo "欢迎您, ";
if(level > 5){
	echo "高级用户!";
}else{
	echo "用户!"
}
// ... 大段代码
echo '<a href="#">个人信息</a>';
if(level > 5){
	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 作为代码重用的唯一方法!

Related posts:

  1. PHP浮点数显示和转成字符串
  2. WordPress分页代码
  3. 数据库内核的快照技术实现原理
  4. 用PHP去除重复图片文件
  5. Shell循环
Posted by ideawu at 2010-06-22 10:52:44

8 Responses to "if-else对优化代码冗余度的反作用"

Leave a Comment