条件语句用于控制其它语句是否执行
if语句
简单if-then语句
在写if语句的时候请遵循下述指导原则:
- 首先写正常代码路径,再处理不常见情况;
- 确保对于等量的分支是正确的;
- 把正常情况的处理凡在if后面而不要放在else后面;
- 让if子句后面跟随一个有意义的语句;
- 考虑else子句;
- 测试else子句的正确性;
- 检查if和else子句是不是弄反了。
if-then-else语句串
使用if-then-else串的时候,请注意下述指导原则:
- 利用布尔函数调用简化负载的检测;
- 把最常见的情况放在最前面;
- 确保所有情况都考虑到了;
- 如果你的语言支持,请把if-then-else语句替换成其他结构。
case语句
为case选择最有效的排列顺序
- 按字母顺序或按数字顺序排列各种情况;
- 把正常的情况放在前面;
- 按执行频率排列case语句。
使用case语句的诀窍
- 简化每种情况对应的操作;
- 不要为了使用case语句而可以制造一个变量;
- 把default子句只用于检查真正的默认情况;
- 利用default子句来检测错误;
- 在C++和Java里,避免代码执行越过一条子句的末尾;
- 在C++里,在case末尾明确无误地标明需要穿越执行的程序流程。
核对表:使用条件语句
if-then语句
- [ ] 代码的正常路径清晰吗?
- [ ] if-then测试对等量分支的处理方式正确吗?
- [ ] 使用了else子句并加以说明吗?
- [ ] else子句用得对吗?
- [ ] 用对了if和else子句,即没把他们用反吗?
- [ ] 需要执行的正常情况是位于if而不是else子句里吗?
if-then-else-if语句串
- [ ] 把复杂的判断封装到布尔函数调用里了吗?
- [ ] 先判断最常见的情况了吗?
- [ ] 判断包含所有的情况吗?
- [ ] if-then-else-if是最佳的实现吗?比case语句还要好吗?
case语句
- [ ] case语句排序得有意义吗?
- [ ] 每种情况操作简单吗?必要的时候调用了其他子程序吗?
- [ ] case语句检测的是一个真实的变量,而不是一个只为了滥用case语句而刻意制造的变量吗?
- [ ] 默认子句用得合法吗?
- [ ] 用默认子句来检测和报告意料之外的情况了吗?
- [ ] 在C、C++或者Java里,每一个case的末尾都有一个break吗?
要点
- 对于简单的if-else语句,请注意if子句和else子句的顺序,特别是用它来处理大量的错误的时候;
- 对于if-then-else语句串和case语句,选择一种有利于阅读的排序;
- 为了捕捉错误,可以使用case语句种的default子句,或则使用if-then-else语句串种的最后那个else语句;
- 各种控制结构并不是生来平等的,请为代码的每个部分选用最合适的控制结构。