前言
这一章如果只记一句话的话,那就是 “变量局部化”。
初始化变量必须遵守的规则
声明变量的好习惯
- 在尽可能靠近变量第一次使用的地方初始化它。 不要把变量都聚到一起声明。(P241)
- 在声明变量的同时初始化。 就是说赋予一个默认值。(P241)
- 能用final就用final (或const同理)。(P243)
- 变量赋值尽量不要写死(硬编码),绑定越晚越好。 绑定越晚,灵活性越高。(P252)。绑定时间基本有三种等级,
- 编码时(硬编码直接赋值写死)
- 编译时(使用具名常量)
- 运行时(使用子程序读入)
- 不要声明不用的变量。
- 每个变量只用于单一用途。 经常设个index,temp,var作为临时工具变量非常不可取。(P255)
- 避免变量具有隐含含义。 隐含含义是指“混合耦合”,例如在某个值域表示某种含义,而在另一个值域表示另一种含义。
变量局部化
变量存在的跨度越大,在中间受到干扰的可能性就越大。而且代码将更具可读性,重构起来也更容易。始终贯彻三个字 “局部化”。
- 尽可能缩短变量的存活时间。 把变量的引用点尽可能地集中起来。存活时间是指引用它的第一条语句和引用它的最后一条语句之间的跨度。
- 尽量避免使用全局变量。 (P248)
- 在循环开始之前才初始化循环里使用的变量。 和第一条类似。(P249)
- 一开始尽量使用最严格的可见性,比如private。 扩展可见性总是容易的,缩小可见性就要困难地多。(P250)
关于计数器,累加器
- 使用i,j,k,sum,total作为计数器(counter)或累加器(accumulator)的名字。
- 使用尽可能少的计数器,累加器代号。 每次用完就重置,以便下次还可以使用这个代号。
声明常量
- 一次性初始化具名常量。 把具名常量集中起来,用一个函数统一初始化。
关于传入的参数
- 检查输入参数的合法性。 属于”防御性编程”的范畴。