最近看了《编写可读代码的艺术》收获颇丰,刚好这本书的读书笔记适合放在这里。程序员的一大乐趣就是可以自己决定创作出的东西,而代码的可读性、代码是否优雅,都决定了你作品的好坏,想要好的作品吗?那就想办法写出更优美的代码吧。
目录
前言
程序员之间的互相尊重和对工作的尊重都体现在代码中。
代码是写给人读的,应该便于理解,优质的代码可以让协作变得高效。
学习编写好代码的习惯,并应用于实践中。
第1章 代码应该易于理解
- 代码的写法应该使别人理解它所需的时间最小化。
- 要多想一想当前在写的代码别人是否容易理解它。
第一部分 表面层次的改进
- 代码风格
- 命名
- 排版
- 注释
第2章 把信息装到名字里
- 选择专业的词。
- 避免泛泛的名字。
- 用具体的名字代替抽象的名字。
- 使用前缀或者后缀附加更多信息。
- 增加单位。如time_cost_day, time_cost_ms
- 当前数据格式。如i_days,f_days。
- 未处理的变量前面加raw_等
- 控制名字长度的依据
- 如果变量作用域小,则可以使用较短的名字。如果变量作用域较大,则尽量使用信息完备的名字。
- 采用缩写的原则是:团队新成员能否理解这个命名
- 利用名字的格式来表达含义
- 可参考Google C++代码风格
- 类名、函数名首单词大写
- 宏全大写
- 变量名全小写,用下划线隔开
- 成员变量最后可以加下划线等,如CountChars_
- 如果一个flag要用于多个模式选择,那么就拆分flag,给他们不同的命名。
第3章 不会误解的名字
- 多问自己几遍,这个名字会被别人解读为其他含义吗?
- 命名尽量具体
- 用min、max表示包含的极限
- 用first和last表示闭区间(stop表示右开,last是右闭)
- 用begin和end表示左闭右开区间
- 给布尔值命名
- bool read_password = true,不能确定是需要读密码还是已经读取了密码
- bool need_password = true会更好。
- 通常加上is、has、can、should这样的词可以让布尔值更加明确。
- 命名需要与使用者的期望相匹配
- 如GetMean(),可能是直接获取已经计算好的mean,也可能是循环计算mean。改成ComputeMean会更好。
- 如调用size()可以改为CountSize()。
第4章 审美
- 保持自己风格一致
- 让相似的代码看上去相似
- 把相关的代码行分组,形成代码块
- 列对齐:整洁易读,容易发现错误。
- 选择一个有意义的顺序,始终一致的使用它。如:
- 从最重要,到最不重要排序。
- 按字母顺序排序
- 用空行把代码分成逻辑上的段落
- 相似的想法放在一起并且与其他想法分开
- 提供可见的注释脚印
- 便于段落间导航
- 保持风格一致性(一致的风格比正确的风格更重要)