首页 » 编写高质量代码:改善JavaScript程序的188个建议 » 编写高质量代码:改善JavaScript程序的188个建议全文在线阅读

《编写高质量代码:改善JavaScript程序的188个建议》建议25:恰当选用if和switch

关灯直达底部

switch结构中存在很多限制,存在这些限制的主要目的是提高多重分支结构的执行效率。因此,如果能够使用switch结构,就不要选择if结构。

无论是使用if结构,还是使用switch结构,应该确保下面3个目标的基本实现:

❑准确表现事物内在的、固有的逻辑关系。不能为了结构而破坏事物的逻辑关系。

❑优化逻辑的执行效率。执行效率是程序设计的重要目标,不能为了省事而随意耗费资源。

❑简化代码的结构层次,使代码更方便阅读。

相对来说,下面几种情况更适合使用switch结构:

❑枚举表达式的值。这种枚举是可以期望的、平行逻辑关系的。

❑表达式的值具有离散性,不具有线性的非连续的区间值。

❑表达式的值是固定的,不是动态变化的。

❑表达式的值是有限的,而不是无限的,一般情况下表达式应该比较少。

❑表达式的值一般为整数、字符串等类型的数据。

而if结构则更适合下面的一些情况:

❑具有复杂的逻辑关系。

❑表达式的值具有线性特征,如对连续的区间值进行判断。

❑表达式的值是动态的。

❑测试任意类型的数据。

例如,针对学生分数进行不同的判断,如果分数小于60,则评定为不及格;如果分数在60~75(不包含75)之间,则评定为合格;如果分数在75~85(不包含85)之间,则评定为良好;如果分数在85~100之间,则评定为优秀。针对这种情况,表达式的值是连续的线性判断,显然使用if结构会更合适一些。


if(score<60){

alert("不及格");

}

else if(60<=score<75){

alert("合格");

}

else if(75<=score<85){

alert("良好");

}

else if(85<=score<=100){

alert("优秀");

}


如果使用switch结构,则需要枚举100种可能,如果分数值还包括小数,情况就更加复杂了,此时使用switch结构就不是明智之举。但是,对于有限制的枚举数据,比如性别,使用switch结构会更高效,例如:


switch(sex){

case"女":

alert("女士");

break;

case"男":

alert("先生");

break;

default:

alert("请选择性别");

}