《编写可读代码的艺术》笔记
1. 代码应该易于理解
好的代码,应该能让人易于理解。
理解难度指的是别人读懂你的代码所需的时间。
读懂指的是,能对代码进行修改和扩展,并保持原有功能不变。
易于理解的代码也易于测试,集成,模块化和扩展。
从提高编码能力来看:程序员应该以写出易于理解的代码为核心目标。
2. 把信息装到名字中
2.1 选择专业的词, 不要空洞
get
这个词很抽象,应该使用 download
fetch
等更具有明显指向的词。
下表是一个建议:
单词 | 更多选择 |
---|---|
send | deliver, dispatch, announce, distribute, route |
find | search, extract, locate, recover |
start | launch, create, begin, open |
make | create, set up, build, generate, compose, add, new |
关键思想:清晰精确比装可爱要好
2.2 避免使用泛泛的名字
例如 tmp
和 retval
这种空洞的词语不要使用。
tmp
这个名字只应用于短期存在且临时性为其主要存在因素的变量。
i
j
k
经常被应用于迭代器,但是应该优先考虑比这些变量更为贴切的命名。
2.3 使用具体的名字代替抽象的名字
例如 ServerCanStart()
,如果它是检测服务是否可以监听某个给定的端口的话,那么就应该声明为 CanListenOnPort()
例子: run_locally
如果我们有个命令行标识叫 run_locally
,那么很难推断出它究竟有什么用处,可能需要在本地运行的时候使用它?但不明白为什么使用它。
假如 run_locally
是用于输出日志,那么就应该把它改成 extra_logging
,如果 run_locally
不仅做这个工作怎么办呢?假如说它还承担了建立和使用一个本地数据库的工作。
那么就应该 新建另一个标志 use_local_database
2.4 为名字附带更多信息
为你的名字带上一些具体的信息,比如说变量的 内在格式,和变量的 单位
string id; // Example: "af84ef845cd8"
如上,如果这个变量的格式很重要,那么就应该在名字附上 hex_id
这里指的就是变量的 内在格式,而不是类似匈牙利命名法的变量的类型。
有时候单位也是很重要的,那么就应该加上单位。
var start_ms = (new Date()).getTime();
var elapsed_ms = (new Date()).getTime() - start;
document.writeln("load time was: " + elapsed + " seconds");
2.5 名字的长度
- 大作用域采用较长名称,小作用域采用短名称
- 使用快捷键来快速输入长名字和使用名字自动补全
- 不要使用大家都不认得的首字母缩写词
- 丢掉没用的词
2.6 利用名字的格式来传递含义
比如说大驼峰是类,小驼峰是变量等等;格式可以指明一个名字的类型。