第10章: 使用变量的一般事项
总结: 代码的可读性比可写性更加重要
就近原则: 当读代码时, 需要同时考虑的变量越少, 代码越容易看懂.
- 在靠近变量第一次使用的位置声明, 定义和初始化
- 尽量缩小变量的作用域, 使用final/const 限制变量的变化可能
- 尽量将相关代码放在一起
- 为变量指定单一用途
尽量将一个事情(变量)的描述集中在一起, 这样:
- 容易理解
- 避免在中间被误修改
- 逻辑上也更为清晰
其他:
- 避免让代码有隐含含义, 代码越简单越好, 远离各种奇技淫巧
- 灵活性与复杂性: 越灵活往往也意味着越复杂, 需要取舍
- 将所有变量都放在开始声明可能并不是一个好的做法, 应该将代码按逻辑分为若干小块, 在每一块的开头声明该块中需要用到的所有变量. 只有在多个块中用到的变量放在函数开头声明. 同时避免单个函数过长
第11章: 变量名的力量
变量命名原则:
- 有意义: 宁可写一个长的有意义的名字, 也比短的无意义或有歧义的强
- 长度: 一般10 ~ 16个字符为最佳, 2到3个单词
- 尽量不用缩写: 有歧义, 易混淆
- 最好的变量名包括: 变量内容, 变量类型, 作用域 通常在成员变量前加m_, 全局变量前加g_
- 采用一套命名规则: 用什么样的规则不重要, 关键是要有规则
一些小的点:
- 将修饰词(如Total, Sum)放在变量名的后面, 描述失误本质的词放在前面 例如carTotal, threadTotal 看起来比totalCar, totalThread更有区分度
- 在复杂的代码中变量名最好有完整的含义, 如 currentData 好于current
第12章: 基本数据类型
原则性问题:
- 避免magic number 或magic string, 使用具名常量
一些小的点:
- 尽量避免隐式类型转换
- 浮点数尽量避免两个相差很大的数相加减
- 字符数组中可以将数组长度声明为字符串长度 + 1, 用来存放'\0'
- 当一个判断条件非常复杂时, 可以用若干布尔变量来使程序更加清晰易懂
- 如果用了具名常量或自定义类型(typedef), 就都使用
- 给自定义类型起名时, 一般描述现实世界的名字(如Pageid)比描述计算机概念的名字(如BigInteger)更好
第13章: 不常见的数据类型
原则性问题:
- 释放一个指针后显式地置NULL,
- 尽量不用全局变量, 如果有必要可以用一个访问器或单例
一些小的点:
- 一般来说, 纯数据的事情可以用struct来表示, 而不是类. 例如给函数传参, 或描述数据关系
- 每个指针包含两部分内容: 内存中的某个位置和如何解释该位置的内容
- 避免连续使用指针, 用一个新的变量代替这种方式