牛骨文教育服务平台(让学习变的简单)
博文笔记

使用变量的一般注意事项

创建时间:2017-09-30 投稿人: 浏览次数:197

注:本文中“变量”一词同时指代对象和内置数据类型

一:关于变量定义

1.关闭隐式声明。作用:避免变量混淆这样的错误发生

2.声明全部的变量。做法:在引入一个新变量的时候对它做出声明

3.遵循某种命名规则。做法:比如说驼峰命名法等等

4.检查变量名。做法:需要使用编译器或第三方工具检测

二:变量初始化原则

1.在声明变量的时候初始化。作用:是一种非常方便的防御式编程,用于很好的防范初始化错误,很多编译器会在你使用了未经初始化的变量的时候发出警告。

2.在靠近变量第一次使用的位置初始化它。做法:遵循就近原则,即把相关操作放在一起。这一原则也适用于让注释靠近它所描述的代码,让控制循环的代码靠近循环本身,以及把语句写成直线的代码等各个领域。

3.理想情况下,在靠近第一次使用变量的位置声明和定义该变量。做法:理想情况下,每个变量都应该在声明的同时被定义。

4.在可能的情况下使用final或者const。做法:final和const关键字在定义类常量,输入参数以及任何初始化后其值不再发生改变的局部变量时非常有用。作用:这样做可以防止该变量在初始化之后再被赋值(如果不初始化的同时赋值,就编辑器就会报错)。

5.特别注意计数器和累加器。注意:i、j、k、sum和total等常量常用作计数器(counter)或累加器(accumulator)。在下一次使用这些变量之前不要忘记重置。

6.在类的构造函数里初始化该类的数据成员。做法:正如子程序的变量应该在每一个子程序内部初始化一样,类的数据也应该在其构造函数中初始化。相应的,如果在构造函数里面分配了内存,那么就应该在析构函数中释放这些内存。

7.检查是否需要重新初始化。注意:在多次使用该变量的时候,尤其需要注意这一点

8.检查输入参数的合法性。做法:在把输入数值赋给任何对象之前,要确保这些数值是合理的。

三:作用域(scope)

作用域(可见性visibility)指的是变量在程序内的可见和可引用的范围。

1.使变量局部化。即:把引用点尽可能集中在一起。衡量一个变量的不同引用点的靠近程度的一种方法是计算该变量的跨度"跨度(span)",跨度越短越可以提高程序的可读性。

2.尽可能缩短变量的"存活时间"。即:一个变量存在期间所跨越的语句总数。

注意:在实际中,应使得对象的存活时间尽可能短,与追求较小跨度的原因相同,都是为了减小攻击窗口,减小错误修改的可能性。

3.减小作用域的一般原则。做法:在循环开始之前再去初始化该循环里使用的变量,而不是在该循环所属的子程序的开始处初始化这些变量。直到变量即将被使用时再为其赋值。把相关语句放在一起。把相关语句组提取成单独的子程序。

四:为变量指定单一用途。

1.每个变量只用于单一用途。

2.避免让代码具有隐含含义。作用:能使代码更清晰。

3.确保使用了所有已声明的变量。即:声明了变量却不使用,在一些编译器和工具上就会给出警告。


注意事项:

对变量:

1.每一个子程序都应该检查其输入参数的正确性;

2.变量声明位置尽量靠近变量第一次使用的位置;

3.尽可能的在声明变量的同时初始化变量;

4.如果无法同时声明和初始化变量,尽量在靠近第一次使用变量的位置声明变量;

5.计数器和累加器要经过适当的初始化,如果需要再一次使用,一定要重新初始化;

6.尽量减少甚至解决所有编译器的警告;

对数据:

1.尽量使所有变量都被定义为最小的作用域;

2.各变量的引用点都尽可能集中在一起,对同一变量的两次相邻引用,或者变量的整个生命周期都应尽可能的集中在一起;

3.控制结构是否符合数据类型?

4.所有声明的变量是否都用到了;

5.尽量使每个变量有且仅有一项用途;

6.尽量明确每个变量的含义,且没有隐含含义。


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。