使用变量的一般事项(P237)
1.数据认知
你了解多少数据类型?
2.轻松掌握变量定义
一些简单的习惯。
- 关闭隐式声明
- 声明全部的变量
- 遵循某种命名规则
- 检查变量名
3.变量初始化原则
不合理地初始化数据时产生编程错误的常见根源之一。掌握一些能够避免初始化问题的行之有效的方法能帮助你节省很多调试时间。
- 在声明变量的时候初始化
- 在靠近变量第一次使用的位置初始化它
- 理想情况下,在靠近第一次使用变量的位置声明和定义该变量
- 在可能的情况下使用final或者const
- 特别注意计数器和累加器
- 在类的构造函数里初始化该类的数据成员
- 检查是否需要重新初始化
- 一次性初始化具名常量:用可执行代码来初始化变量(比如:Startup())
- 使用编译器设置来自动初始化所有变量
- 利用编译器的警告信息
- 检查输入参数的合法性
- 使用内存访问检查工具来检查错误的指针
- 在程序开始时初始化工作内存
4.作用域
简单地说,作用域就是变量的“名气”有多大。作用域或者可见性指的是变量在程序内的可见和可引用的范围。1)使变量引用局部化
2)尽可能缩短变量的“存活时间”
“存活时间”,即一个变量存在期间所跨越的语句总数。
3)减小作用域的一般原则
- 在循环开始之前再去初始化该循环里使用的变量,而不是在该循环所属的子程序的开始处初始化这些变量。
- 直到变量即将被使用时再为其赋值。
- 把相关语句放到一起
- 把相关语句组提取成单独的子程序
- 开始时采用最严格的的可见性,然后根据需要拓展变量的作用域
4)有关缩小变量作用域的说明
“方便性”和“智力可管理性”两种概念的区别,归根结底来源于侧重写程序还是读程序之间的区别。
5.持续性
“持续性”是对一项数据的生命期的另一种描述。
6.绑定时间
“绑定时间”即把变量和它的值绑定在一起的时间。采用越晚的绑定时间会越有利。以上的几种绑定时间,硬编码是最糟糕的,其他方法按需要时选择。//硬编码 titleBar.color = 0xFF; //在编译时绑定其值的变量 private static final int COLOR_BLUE = 0xFF; private static final int TITLE_BAR_COLOR = COLOR_BLUE; ... titleBar.color = TITLE_BAR_COLOR; //在运行时绑定其值的变量 titleBar.color = ReadTitleBarColor();
7.数据类型和控制结构之间的关系
- 序列数据翻译为程序中的顺序语句
- 选择型数据翻译为程序中的if和case语句
- 迭代型数据翻译成程序中的for、repeat、while等循环结构
8.为变量指定单一用途
通过使用一些巧妙的方法,可以给一个变量赋予多种职责。不过你最好还是远离这些奇技淫巧。
- 每个变量只用于单一用途
- 避免让代码具有隐含含义
不要吝啬那一点储存空间- 确保使用了所有已声明的变量