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

组织直线型代码(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子句末尾的话
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值