本周阅读了《代码大全2》第14章至第17章,这几章对我们熟悉的直线型代码、条件语句、循环语句和一些不常用的控制结构(如goto、try-catch结构)提出了一些使用建议,以下分享条件语句和循环语句部分的阅读心得。

条件语句

使用if-else语句时,稍微花点心思在缩进的对应上可以给后期的调试提供便利。对于只有一个操作的情况也应使用花括号使其成为一个代码段。将正常情况的处理放在if子句后面或者else子句后面,或者至少嵌套使用中做出统一的规定。在if-else嵌套语句中,把正常的、最常见的情况放在前面,并精简对应最常见情况的判断条件,一方面方便阅读代码,另一方面可以提高执行效率。

同样道理,switch-case语句中各个情况也需要合理的排布。一些编程语言(如Java和C++)在case中只支持整数类型、char类型等序数类型,所以我们倾向于按照自然顺序排列各种cases(情况),事实上我们可以尝试把各种cases按照执行频率排列,一方面方便阅读,另一方面就可以提高检索效率。当只剩下最后一种情况时,还是用case表示,利用default子句来检测错误和抛出异常。同时,简化每种情况对应的操作,case语句应该用来处理简单、容易分类的数据,不然要考虑使用if-else语句或者将复杂的操作用子程序整合。

循环语句

循环执行流程可分为以下几部分:

1.进入循环:把初始化代码置于循环前面

2.循环体内:内务操作(循环控制语句,例如i++,j++)放在循环的开始或结尾。即使循环体内只有一条语句,也不要将其与循环头部尾部置于同一行,毕竟是三行分开的工作。精简各个循环的整体设计,冗杂细节可以先用子程序整合。

3.退出循环:保证能退出循环,使循环终止条件看起来很明显。

4.提前退出循环: continue和break语句, 如果语言支持,尽量使用带标签的break语句。

在设计循环、检查循环代码,debug时检查循环端点,既考虑初始情况、最终情况,以及中间过程的任意情况。为保证循环控制变量可以正确地被更新,可以模拟演示2到三个循环的情况找出一般规律。(由内而外设计循环,使用伪代码。)使用循环变量时应该注意,使用整数或者枚举类型表示数组和循环的边界; 使用有意义的变量名提高可读性,尤其是在嵌套循环中;把循环下标变量的作用域限制在本循环内,有可能导致编译错误,而且增加了耦合度。

最新文章

  1. 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
  2. POJ2488A Knight's Journey[DFS]
  3. Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never diffe
  4. Qt的Qss样式
  5. 记一次 Google 面试经历
  6. C# TypeConverter 数据转换
  7. 信息安全实验三:privilege-separation
  8. Delphi控件下载网
  9. HDU - 1588 Gauss Fibonacci (矩阵高速幂+二分求等比数列和)
  10. 携程Apollo(阿波罗)配置中心用户管理和部门管理
  11. windows之如何把文件夹转换成iso文件
  12. 2、Docker基础用法
  13. java static 在java 中的使用。
  14. 【LeetCode题解】24_两两交换链表中的节点(Swap-Nodes-in-Pairs)
  15. Redis客户端连接以及持久化数据(三)
  16. iOS录制视频
  17. 导出AD用户所属组,查询AD用户(aduser)
  18. PIXIV 爬取国际前100名代码
  19. mysql-5.7 收缩系统表空间详解
  20. [日常] NOIp 2018 滚粗记

热门文章

  1. linux缺頁異常處理--內核空間[v3.10]
  2. SpringMVC学习(12):基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
  3. Java数组遍历
  4. elasticsearch 分析器 分词器
  5. node 下载 解压 重命名
  6. github 配置ssh
  7. C语言数组,指针小案例
  8. C语言结构体实例-创建兔子
  9. Delphi 访问https /SSL、OpenSSL
  10. AcWing 232. 守卫者的挑战 (期望DP)打卡