<The Art of Readable Code> 笔记一
第1章 代码应易理解 (Code should be easy to understand)
基本原则:好的代码,能够减少 “别人” 理解它的时间。 “别人” 不仅指的是 “其它人”,也可能是 “以后的自己”

1 合习惯
Node* node = list->head;
if (node == NULL) return; while(node->next != NULL) {
Print(node->data)
node = node->next;
}
if(node != NULL) Print(node->data);
上面代码,等效于下面代码,但是很明显,后者更容易理解。
for (Node* node = list->head; node != NULL; node = node->next)
Print(node->data);
2 少 ≠ 好
1) 少而好
// if 语句
if(exponent >= ) {
return mantissa * ( << exponent);
} else {
return mantissa / ( << -exponent);
} // 条件运算符
return exponent >= ? mantissa * ( << exponent) : mantissa / ( << -exponent);
2) 少而不好
// 不易理解
assert ((!(bucket = FindBucket(key))) || !bucket->IsOccupied()); // 易理解
bucket = FindBucket(key);
if(bucket != NULL) asset(!bucket->IsOccupied());
3 加注释
// Fast version of "hash = (65599 * hash) + c"
hash = (hash << ) + (hash << ) -hash + c;
<The Art of Readable Code> 笔记一的更多相关文章
- JavaScript高级程序设计笔记之面向对象
说起面向对象,大部分程序员首先会想到 类 .通过类可以创建许多具有共同属性以及方法的实例或者说对象.但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,Jav ...
- javascript高级程序设计--笔记01
概述 JavaScript的实现包含三个部分: 1 核心(ECMAScript) 提供核心语言功能 2 文档对象模型(DOM) 一套提供了访问以及操作网页内容的API 3 浏览器对象模型( ...
- javascript事件小结(事件处理程序方式)--javascript高级程序设计笔记
1.事件流:描述的是从页面中接收事件的顺序. 2.事件冒泡:IE的事件流叫做事件冒泡,即事件开始从具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到不具体的节点(文档). 3.事件捕获 ...
- JavaScript高级程序设计笔记(一)
---恢复内容开始--- 前三章为基础知识,为了方便以后查看,所以比较啰嗦.这里对函数的基本操作没有记录. 1.JavaScript的实现 虽然 JavaScript 和 ECMAScript 通常都 ...
- JavaScript高级程序设计笔记 事件冒泡和事件捕获
1.事件冒泡 要理解事件冒泡,就得先知道事件流.事件流描述的是从页面接收事件的顺序,比如如下的代码: <body> <div> click me! </div> & ...
- <javascript高级程序设计>笔记
1.要讲一个值转换成其对应的Boolean类型 ,可以调用转型函数Boolean(). var message=“hello world!”; var messageAsBoolean=Boolean ...
- javaScript高级程序设计笔记 2
Undefinde Null Boolean Number String 基本类型 Object 引用类型 只有引用类型才能动态的添加属性 赋值基本类型和引用类型也不相同,复制的基本类型的 ...
- javaScript高级程序设计笔记 1
核心 ECMAScript 文档对象模型 DOM 浏览器对象模型 BOM 延迟脚本 defer typeof操作符 判断字符类型 返回 undefined boolean s ...
- Javascript高级程序设计笔记 <第五章> 引用类型
一.object类型 创建object实例的方式有两种: //第一种使用new操作符跟构造函数 var person= new Object(); person.name="小王" ...
- Javascript高级程序设计笔记(很重要尤其是对象的设计模式与继承)
var obj = {'a':'a'}; var fun = function (){} console.log(typeof obj);//object console.log(typeof fun ...
随机推荐
- mycat数据库中间件入门
首先从官网上下载mycat. 官网链接 下载对应的mycat即可. 我也是小白一个,就是直接在window上操作了. 自己画的,真low. 推荐一篇文章 https://blog.csdn.net/u ...
- CF614A【签到题】
题目链接[http://codeforces.com/problemset/problem/614/A] 题意:输入三个数l.r.k(1 ≤ l ≤ r ≤ 1018, 2 ≤ k ≤ 109),输出 ...
- 动态规划:部分和问题和数字和为sum的方法数
很久之前看过这个题目,但是没有仔细整理,直到现在看基础才想到这两个题.这两个题非常经典也非常类似.接下来分别介绍. 部分和问题 题目描述 给定整数a1.a2........an,判断是否可以从中选出若 ...
- 【UOJ #107】【APIO 2013】ROBOTS
http://uoj.ac/problem/107 设\(f(l,r,i,j)\)表示\([l,r]\)中的机器人聚集到\((i,j)\)需要花的最小操作数. \(f(l,r,i,j)=\min\le ...
- Tsinsen Palisection
建回文树. 正反建统计一种前缀和求出所有不相交的,用总数减去就是答案数. 在这里我们可以知道一个字符串中所有回文串的个数即为num数组之和(因为以一个节点为回文串结尾的字串都是唯一的) 也可以是cnt ...
- python爬取基础网页图片
python基础爬虫总结 1.爬取信息原理 与浏览器客户端类似,向网站的服务器发送一个请求,该请求一般是url,也就是网址.之后服务器响应一个html页面给客户端,当然也有其他数据类型的信息,这些就是 ...
- 【8.17校内测试】【模拟】【set】【网络流】
为什么每次想的最久的题得的分数最低!!!qwqwq 再也不在noip上尝试A*叻!! 模拟题,先把能消的消掉,双指针从两端向中间扫描,如果头尾合并可以消,就把它消掉,最后判断一下.因为消完过后num保 ...
- bzoj 1834: [ZJOI2010]network 网络扩容 -- 最大流+费用流
1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MB Description 给定一张有向图,每条边都有一个容量C和一 ...
- mysql插入中文乱码问题
1.show variables like 'character%' 2.修改 MySql安装目录下面的my.ini(MySQL Server Instance Configuration 文件). ...
- IOS开发自定义CheckBox控件
IOS本身没有系统的CheckBox组件,但是实际开发中会经常用到,所以专门写了一个CheckBox控件,直接上代码 效果图: UICheckBoxButton.h文件如下: #import #imp ...