代码大全第二版读书笔记 第四部分-语句 十四、组织直线型代码 十五、使用条件语句

来源:互联网 发布:python基础教程第四版 编辑:程序博客网 时间:2024/04/28 13:12

组织直线型代码(P347)

1.必须有明确顺序的语句(P347)

如果语句之间存在依赖关系,并且这些关系要求你把语句按照一定的顺序加以排列,那么请设法使得这些依赖关系变得明显。
  • 设法组织代码,使依赖变得明显
  • 使子程序名能凸显依赖关系
  • 利用子程序参数明确显示依赖关系
    '暗示顺序依赖关系的数据InitializeExpenseData( expenseData);ComputeMarketingExpense( expenseData);ComputeSalesExpense( expenseData);ComputeTravelExpense( expenseData);ComputePersonnelExpense( expenseData);DisplayExpenseSummary( expenseData);
    '表示没有顺序依赖关系的数据ComputeMarketingExpense( marketingData);ComputeSalesExpense( salesData);ComputeTravelExpense( travelData);ComputePersonnelExpense( personnelData);DisplayExpenseSummary( marketingData,salesData,travelData,personnelData);
  • 用注释对不清晰的依赖关系进行说明
  • 用断言或者错误处理代码来检查依赖关系

2.顺序无关的语句(P351)

1)使代码易于自上而下地阅读

作为一条普遍性原则,要让程序易于自上而下阅读,而不是让读者的目光跳来跳去。专家们认为自上而下的顺序对提高可读性最有帮助。
//跳来跳去的糟糕代码MarketingData marketingData;SalesData salesData;TravelData travelData;travelData.ComputeQuarterly();salesData.ComputeQuarterly();marketingData.ComputeQuarterly();salesData.ComputeAnnual();marketingData.ComputeAnnual();travelData.ComputeAnnual();salesData.Print();travelData.Print();marketingData.Print();

//组织良好的顺序代码,能从头到尾阅读MarketingData marketingData;marketingData.ComputeQuarterly();marketingData.ComputeAnnual();marketingData.Print();SalesData salesData;salesData.ComputeQuarterly();salesData.ComputeAnnual();salesData.Print();TravelData travelData;travelData.ComputeQuarterly();travelData.ComputeAnnual();travelData.Print();

2)把相关的语句组织在一起

同上所述。

使用条件语句(P355)

1.if语句(P355)

1)简单if-then语句

  • 首先写正常代码路径;再处理不常见情况
  • 确保对于等量分支是正确的
    请不要用“>”代替">="等情况出现
  • 把正常情况的处理放在if后面而不要放在else后面
  • 让if子句后面跟随一个有意义的语句
  • 考虑else子句
    //有益的、带注释的else子句if( COLOR_MIN <= color && color <= COLOR_MAX){//do something...}else {//else color is invalid//screen not written to -- safely ignore command}
  • 测试else子句的正确性
  • 检查if和else子句是不是弄反了

2)if-then-else语句串

  • 利用布尔函数调用简化复杂的检测
  • 把最常见的情况放在最前面
  • 确保所有的情况都考虑到了
  • 如果你的语言支持,请把if-then-else语句串替换成其他结构

2.case语句(P361)

1)为case选择最有效的排列顺序
  • 按字母顺序或按数字顺序排列各种情况
  • 把正常的情况放在前面
  • 按执行频率排列case子句
2)使用case语句的诀窍
  • 简化每种情况对应的操作
  • 不要为了使用case语句而刻意制造一个变量
    与其刻意制造一个本不适用于case的假冒变量,不如使用一个if-then-else-if检测串来检查整个字符串。
  • 把default子句只用于检查真正的默认情况
  • 利用default子句来检测错误
  • 在C++和Java里,避免代码执行越过一条case子句的末尾
  • 在C++里,在case末尾明确无误地标明需要穿越执行的程序流程
    如果要你故意让代码越过某一case子句末尾的话
0 0