zoukankan      html  css  js  c++  java
  • 《代码大全2》阅读笔记08Chapter 15 Using Conditionals

    Chapter 15 Using Conditionals
    使用条件语句

    15.1 if statements if语句
    ·Plain if-then Statements 简单if-then语句
    1. 首先写正常的代码途径;再处理不常见情况
    2. 确保对于等量的分支是正确的
    3. 把正常的情况放在if后面,而不要else后面。尽量把所有正常的情况和所有错误的情况放在一起。
    4. 让if子句后面跟随一个有意义的语句
     例如,有时,你会看到
     if(SomeTest)
      ;
     else{
      //do something;
     }
     应修改为:
     if (!SomeTest)
     {
      //do something;
     }
    5. 考虑else子句
     如果你认为自己只要一个简单的if语句,那么请考虑你是否真的不需要一个if-then-else语句。
     通用汽车公司做的一项经典分析发现,有5至8成的if语句应该配有一个else子句(Elshoff 1976)。
     一种选择是,如果需要也可以用一个空语句,用以表明这种else情况考虑过了。除非空else部分其原因显而易见,否则

    请用注释来解释为什么这里else子句没有必要,就象下面:
     if(Color_Min <= color && color <= Color_Max){
      ......
     }
     else{
      //else color is invalid.
     }

    6. 测试else子句的正确性

    7. 检查if和else子句是不是弄反了

    ·Chains of if-then-else Statements
     if-then-else语句串
    在不支持或者部分支持case的语言里,会用到if-then-else语句串。请注意以下指导原则:
    1. 利用布尔函数调用简化复杂的检测
    2. 把最常见的情况放在最前面。
    3. 确保所有的情况都考虑过了。
    4. 如果你的语言支持,请把if-then-else语句串替换成其他结构,如Case或者switch等。

    15.2 case Statements case语句
    ·Choosing the Most Effective Ordering of Cases
     为case选择最有效的排列顺序
    1. 按字母顺序或按照数字顺序排列各种情况
    2. 把正常的情况放在前面
    3. 按执行频率排列case子句

    ·Tips for Using case Statements
     使用case语句的诀窍
    1. 简化每种情况对应的操作
    2. 不要为了使用case语句而刻意制造一个变量
     与其可以制造一个本不适用于case的假冒变量(phony variable),不如使用一个if-then-else-if检测串来检查变量


    3. 把default子句只用于检查真正的默认情况
     也许有时候你只剩下一种情况需要处理,于是决定吧这中情况写入default子句。尽管这么做有时候很诱人,但确是很不

    明智的。
    4. 利用default子句来检测错误
     如果一条case语句中的默认子句既没有用来做其他的处理,按照正常执行顺序也不可能会发生,那么就向里面加入一条

    诊断消息吧。
     请仔细检查以确认每一个可能进入case语句的值都是合法的。如果你发现了一些不合法的值,那么就重写这些语句,让

    默认子句去执行错误检测。
    5. 在C++和JAVA里,避免代码执行越过一条case子句的末尾。
     即,一定要每个case都要有break语句。
    6. 在C++里,在case末尾明确无误地标明需要穿越执行的程序流程。
     如果你故意让代码越过某个case子句的末尾,那么就在相应的位置给出明确的注释。
     其实,这种代码应该避免的。

    Key Points 要点
    ·对于简单的if-else语句,请注意if子句和else子句的顺序,特别是用来处理大量错误的时候。要确认正常的情况是清晰的。
    ·对于if-then-else语句串和case语句,选择一种最有利于阅读的排序。
    ·为了捕捉错误,可以使用case语句中的default子句,或者使用if-then-else语句串中的最后那个else子句。
    ·各种控制结构并不是生来平等的。请为代码的每个部分选用最合适的控制结构。

    Desire has no rest.
  • 相关阅读:
    FreeMarker常用语法学习
    Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作-------sql方式
    Oracle Partition 分区详细总结
    oracle 当中,(+)是什么意思
    SQL中EXISTS的用法
    JS return false 与 return true
    Merge into语句用法及其效率问题
    几种设置表单元素中文本输入框不可编辑的方法
    Oracle存储过程基本语法
    UNIX网络编程——Socket粘包问题
  • 原文地址:https://www.cnblogs.com/samcn/p/1450520.html
Copyright © 2011-2022 走看看