读书笔记:编写可读写代码的艺术
可读性基本定理,代码的写法应当使别人理解他所需要的时间最小化
##表面层次的改进 ####变量的名字 变量的名字是最能表现程序想法和思路的代码了。如果变量都有一个合适的名字,对代码理解来说,是最大的助力。
-
选择专业的避免歧义的词汇。
- 使用更确切更具体的词汇。
EX –
send: deliver, dispatch, announce, distribute, route.
find: search, extract, locate, recover.
start: launch, create, begin, open.
make: generate, compose, add, new. -
规避空洞的名字 如tmp, new等。如果非要使用,则仅用于短期存在,且临时性为其主要存在因素的变量。
-
命名尽量后缀变量类型 类似str, arr等单词缩写,能够明显的表示出变量类型,以保证赋值时不会出现问题。
-
在某些情况下,会有比i, j, k更贴切的迭代器命名。
-
一个变量名字,就像是一个小小的注释
尽管空间不是大,但不管你在名字中挤进任何额外的信息,每次有人看到变量名字时,都会看到这些信息。 -
若变量是一个度量,记得带上单位
-
名字的格式也可以表示含义 常量的格式:kConstantName
宏的格式:MACRO_NAME -
名字的长度 在小的作用域内,可以使用较短的名字。
但在为作用域比较大的变量起名字时,要采用更长的名字。
大小写和下划线也很关键。 -
使用max和min来表示极限。
-
使用first和last来表示范围。
-
使用begin和end表示包含/排除范围。
-
给布尔值命名:加上is, has, can, should, 避免使用反义名字。
- 与使用者的期望保持一致,某些情况下, get, set, size, length等fang’s方法默认是轻量级的。
####审美之美
- 3条原则
- 使用一致的布局
- 让相似的代码看上去相似
- 把相关的代码行分组,形成代码块
- 使用换行来保持一致和紧凑
- 整理时,将代码块抽象(为方法)解决不规则,重复的代码。
- 必要时,使用列对齐
- 在上下文中使用一致的顺序
- 将代码分块,并为每个块提供统一型注释
- 将声明分块,并为每个块提供统一型注释
####注释之美
- 注释的目的是尽量帮助读者和作者了解的一样多。
-
好的代码优于好的注释。
- 针对代码中的瑕疵写注释
- // TODO: 待办事项
- // FIXME: 已知的无法运行的代码
- // HACK: 对一个问题不得不采用比较粗糙的解决方案
- // XXX: 重要的问题
- 重要的是,你应该可以随时把代码将来应该如何改动的想法用注释记录下来。这种注释给读者带来对代码质量和当前状态的宝贵见解。
-
为常量增加注释
大部分常量都是不需要注释的,因为名字本身已经很清楚了。但是也有一部分常量,比如可以配置的常量,需要知道边界值. -
利用注释回答应有的问题和公布潜在的风险。
-
在某个类前面增加注释,来描述该类或者文件的主要作用是非常有必要的。
-
注释不仅仅要说明‘Why’,也要说明‘How’和‘What’。
- 注释也是一种写作能力,经常写注释,就会发现写注释其实很简单。