《代码大全》学习之--使用变量的一般事项

    之前公司培训的时候对变量就很重视,并且编码规范里面也有一些讲述,毕竟,变量是程序员最常打交道的程序元素之一。今天重读了而关于变量的这一章,再一次崇拜一下作者老到的程序功底,也解决了几个一直存疑的问题。

    1.轻松掌握变量定义

    (1)隐式声明:这对于任何一种语言来说都是一个非常危险地特性。接触过的支持隐式声明的语言有三种:Matlab,VB以及PHP。曾记得上学时用Matlab写算法,常常因为一个变量的值不对要查代码很久。有时候弄得很烦躁,并且纠错的效率极其低下。

    (2)关闭隐式声明:如果一个支持隐式声明的编译器支持关掉隐式声明的话,我想我会毫不犹豫关掉它的,因为我真的,曾经苦不堪言!

    (3)声明全部的变量

    (4)遵循某种命名规则

    (5)检查变量名:可以采用第三方软件或者使用编译器

    2.初始化变量的原则

    (1)在声明变量的时候初始化:在声明变量的同时初始化是一种非常方便的防御式编程方法,是一种很好的用于防范初始化的保险错误。之前在写CAD导图功能的时候,就是因为两个布尔变量没有初始化最后导致出现bug。这里尤其要注意的是,由于很多编译器在编译的时候会自动为一些简单类型的数据进行初始化,因此,在debug版下,即使没有初始化也不会出现什么问题,但是一旦转到Release版本下,由于编译器作用不再,这时候变量中是什么就很难说,从而导致出现bug。因此,最保险的方法就是手动初始化,或者说在调用之前一定要初始化。

    (2)在靠近变量第一次使用的位置初始化它:这一点似乎跟上一点有矛盾。但是按照作者的意思,这种做法较上一种做法更好。

    (3)理想情况下,在靠近第一次使用变量的位置声明和定义该变量。

    (4)在可能的情况下使用final和const:这种方法使用于具名常量以及初始化后不希望再被改动的参数、变量中。

    (5)在类的构造函数中初始化该类的数据成员:这种方法的好处在“可以工作的类”中也讲过,那就是可以避免调用未初始化的数据成员。

    (6)使用内存访问检查工具来检查错误的指针

    3.作用域

    (1)使变量的引用局部化:局部化的好处就是可以提高程序的可读性,也便于重构。

    (2)尽可能缩短变量的“存活”时间:缩短存活时间可以降低代码复杂度,使得作者和阅读者都能对代码有更准确地认识,(注意“跨度”和“存活时间”的概念),对重构也有好处。

    4.减小作用域的一般原则

    (1)在循环开始之前再去初始化该循环里使用的变量,而不是在该循环所属的子程序的开始处初始化这些变量。

    (2)知道变量即将被使用时再为其赋值。

    (3)把相关语句放到一起。比如对A和B对象都作了甲乙丙丁四件事,可以拆成单独对A做了四件事和单独对B作了四件事两个部分,这样做的好处一是变量的存活时间变短,而且便于重构处子程序。

    (4)把相关的语句组提取成单独的子程序。

    (5)开始时采用最严格的可见性,然后根据需要扩展变量的作用域。

    5.为变量指定单一用途

    (1)每个变量只用于单一用途

    (2)避免让代码具有隐含含义

    (3)确保使用了所有已声明的变量:这种情况在实际代码中很常见,而且往往被人忽略,戒之!   

posted @ 2011-09-28 20:39  Core Hua  阅读(325)  评论(0编辑  收藏  举报