《代码大全2》读书笔记 Week9
本周阅读了《代码大全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到三个循环的情况找出一般规律。(由内而外设计循环,使用伪代码。)使用循环变量时应该注意,使用整数或者枚举类型表示数组和循环的边界; 使用有意义的变量名提高可读性,尤其是在嵌套循环中;把循环下标变量的作用域限制在本循环内,有可能导致编译错误,而且增加了耦合度。
《代码大全2》读书笔记 Week9的更多相关文章
- 代码的未来读书笔记<二>
代码的未来读书笔记<二> 3.1语言的设计 对Ruby JavaScript Java Go 从服务端client以及静态动态这2个角度进行了对照. 这四种语言因为不同的设计方针,产生了不 ...
- 《第一行代码 android》 读书笔记:找出当前界面对应的Activity
在android开发中找出当前界面对应的Activity,步骤如下: 新建一个BaseActivity继承自Activity,然后在BaseActivity中重写onCreate()方法,通过getC ...
- 《Linux命令行与shell脚本编程大全》- 读书笔记1 - 基本的bash shell 命令
这本书买了好久了,除了刚到手的那几天翻看了一下以外,竟然到今天都没有看过.突然想要写一个shell脚本,发现什么也不会,是时候开始学习了,今天先把最简单的一章再看一遍顺便做一些笔记,明天继续后面的! ...
- 【代码大全2 学习笔记】ADT 抽象与封装
ADT abstract data type 抽象数据类型 要理解面向对象编程,就要先理解ADT这个概念.不懂ADT的程序员开发出来的类只是名义上的"类"而已--只是单纯的把一些相 ...
- 《Linux命令行与shell脚本编程大全》- 读书笔记3 - 理解shell
当用户登录终端的时候,通常会启动一个默认的交互式shell.系统究竟启动哪个shell,这取决于用户配置.一般这个shell都是/bin/shell.默认的系统shell(/bin/sh)用于系统sh ...
- 《Linux命令行与shell脚本编程大全》- 读书笔记2 - 更多的bash shell命令
更多的bash shell命令 想检测进程,需要熟悉ps命令的用法.ps命令好比工具中的瑞士军刀,它能输出运行在系统上的所有程序的许多信息.默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户 ...
- 《Linux命令行与shell脚本编程大全》读书笔记
第一章:初识Linux 1.linux可划分为四个部分:内核.GNU工具.图形化桌面环境.应用程序 2.内核主要负责:系统内存管理.软件程序管理.硬件设备管理.文件系统管理 3.内核的系统内存管理,有 ...
- 《代码大全》阅读笔记-33-个人性格(personal character)
很多好的编程做法都能减轻你的大脑灰质细胞(指脑力)的负担. 将系统"分解",是为了使之易于理解("设计的层次"). 进行审查.评审和测试正是为了减少人为失误.如 ...
- 《代码大全2》读书笔记 Week8
这一周博主阅读了<代码大全2>第11章至第13章,第三部分——"变量"就结束了,第四部分作者将转入语句的讨论. 第十一章作者详细阐述了变量名的有效命名规则,第十二和十三 ...
随机推荐
- mybatis默认的数据源连接池(PooledDataSource和UnPooledDataSource)
一般情况下我们操作数据库都是通过connection,但是频繁创建和删除connection会严重影响效率,因此在这种情况下我们一般会用到连接池,因为项目中用到的是mybatis,所以了解一下myba ...
- C#序列化json属性名首字母变成小写的解决方案
原文:C#序列化json属性名首字母变成小写的解决方案 //接口返回自动转小写,容易造成前后端不一致,获取不到数据,切换成转驼峰(首字母大写)如Code/Result //在ConfigureServ ...
- 常用Message Queue对比
目前业界有很多MQ产品,我们作如下对比: RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量 ...
- constructor prototype __proto__
什么是对象 若干属性的集合 什么是原型? 原型是一个对象,其他对象可以通过它实现继承. 哪些对象有原型? 所有的对象在默认情况下都有一个原型,因为原型本身也是对象,所以每个原型自身又有一个原型(只有一 ...
- 【知识强化】第六章 查找 6.3 B树和B+树
本节课我们来学习本章的第一个难点,就是B树.那么B树它其实是一种数据结构,我们设计出这种数据结构就是为了提高我们的查找效率的,提高我们在磁盘上的查找效率.那么什么是B树呢?了解B树之前,我们先来回忆一 ...
- tomcat manager详解
Tomcat Manager是Tomcat自带的.用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用.Tomcat是Java领域使用最广泛的服务器之一,因此Tomcat Mana ...
- ANSI-2
一.ANSI编码 1. 如前所述,在全世界所有国家和地区的文字符号统一编码的UCS/Unicode编码方案问世之前(UCS.Unicode后文有详细介绍),各个国家.地区为了用计算机记录并显示自己的字 ...
- 安装JDK,并检测JDK是否安装成功
方法/步骤 首先,我们需要先安装好我们的JDK软件,安装好之后,我们需要对我们的电脑进行环境变量配置的设置,这样我们安装的JDK才能真正起到作用. 第一步:我们需要将光标放在“计算机”上面,然 ...
- github gist 查看html
gist GitHub Gist 指南 https://blog.csdn.net/yz18931904/article/details/80482166 通过修改hosts解决gist.github ...
- JavaSE---Object
1.概述 Object常用方法: 1.1 getClass(): public final native Class<?> getClass(); 返回 该对象 运行时的Class ...