看完代码大全第10章『使用变量的一般事项』,我想根据我们目前最容易遇到的以及对于我们目前最需要重视的方面,提炼出一些书中的精华。在这经典之上再进行浓缩一下。
先说一点知识:
数据认知
要想创建有效数据,那必须先了解所有创建数据的种类。
目前大概有20多个数据类型
有了概念后直接步入正题。
变量定义
坚持一个原则:所有的变量都要声明
变量初始化原则
1.在声明变量的时候初始化
float studentGrades[MAX_STUDENTS]={0.0};
2.在靠近变量第一次使用的位置初始化它
3.综合1和2,理想情况下,在靠近第一次使用变量的位置声明和定义该变量
java
int accountIndex = 0;
// code using accountIndex
...
double total = 0.0;
// code using total
...
boolean done = false;
// code using done
while(!done){
...}
4.恰当的情况下使用final或者const, java 里把变量声明为const,这样可以防止该变量在初始化之后再被赋。
在定义类常量、输入参数以及任何初始化后其值不再发生改变的局部变量时非常有用
5.在类的构造函数里初始化该类的数据成员
6.利用编译器的警告的信息,很多编译器会在你使用了未经初始化的变量的时候发出警告。
7.检测输入参数的合法性
作用域
总的说:变量的作用域越大,这个变量越不稳定,越危险。
建议:
1. 使变量引用局部化
2. 尽可能的缩短变量的存活时间
减小作用域的一般原则
- 在循环开始之前再去初始化该循环里使用的变量,而不是在该循环所属的子程序的开始处初始化这些变量。
- 直到变量即将被使用时再为其赋值。
- 把相关语句组提取成单独的子程序。
- 以上总结就是一句话:尽量使变量局部化。
持续性
首先解释一下名词,通俗点就是生命周期,变量的寿命
举个例子:在Java里,用new创建的变量会一直持续到它成为垃圾被回收为止。
如何处理难以预料的变量的寿命,比如寿命到了,你却还以为它还可以使用
几点建议;
- 准备抛弃变量时给它们赋上不合理的数值,例如, 你可以在删除一个指针后把它的值设为null.
- 在程序中加入调试代码来检测那些关键变量的合理取值。
绑定时间
解释:把变量和它的值绑定在一起的时间
建议:
采用越晚的绑定时间会越有利,绑定时间越早灵活性越差
Java示例:在编码时绑定其值的变量
titleBar.color = 0xFF;
这种硬编码方式的绑定就很糟糕,因为一旦要修改这个0xFF,那么这个新值就无法同代码中那些必须要和它一样的0xFF保持一致了
举个绑定靠后的例子:
Java示例:在编译时绑定其值的变量
private static final int COLOR_BLUE = 0xFF;
private static final int TITLE_BAR_COLOR =COLOR_BLUE;
...
titleBar.color = TITLE_BAR_COLOR;
TITLE_BAR_COLOR是一个具名常量,编译器会在编译的时候把它替换为一个数值,这种方法总是好于硬编码,也增加了可读性。
下面举个晚期绑定的例子
Java示例:在运行时绑定其值的变量
titleBar.color = ReadTitleBarColor();
ReadTitleBarColor()是一个能在程序运行期间读入数值的子程序,与上面相比,更具可读性和灵活性,无须通过修改程序来改变titleBar.color,只需要简单修改ReadTitleBarColor()子程序要读取的数据源内容即可。
为变量指定单一用途
1.每个变量只用于单一用途。
2.避免让代码具有隐含含义。
这个要说一下,这种滥用在技术领域被称为混合耦合,啥意识呢?简单点说:就是你定义的变量用于两种以上的用途,那也就意味着其类型对于其中的任何以一项用途而言都是错误的。
3.确保使用了所有已声明的变量,不用放在那里会很容易出事的(笑哭)
嗯~最后我觉得掌握了这些,那么对变量的使用会更加的得心应手
写于:2017年2月12日16:34:15