代码大全——第三部分

“成功是一种习惯”成功的编码也是一种习惯。第三部分继续深入,从变量开始,阐述对编程时的定义变量应注意的问题。

《使用变量的一般事项》介绍了各种语言中的不同数据类型,虽然不同语言的数据类型是不一样的,但一些高级数据类型往往可以用低级类型来模拟。定义类型在VB中可以隐式声明,但这并不是好习惯,除非代码只有自己用的几十行(如脚本),所以加上Option Explicit限制。变量的初始化最好在变量声明时,或者和声明放在一起(如VB不支持声明时赋值)。有些语言会在变量声明时自动赋默认值,但一般只限于全局变量。手动赋值是一个好习惯,并不会引起性能上的问题。多使用const(java中final)const、final的具体语法细节不做讨论,但往往这种对语法的限制在规模程序设计中非常有用,如在类中设置尽可能小的访问权限,接口的定义,等等。
变量的作用域从全局到namespace到class到函数再到程序段,核心思想就是不要让变量暴露得太广泛,能缩小其作用范围就缩小其作用范围。在其作用范围内还要缩小变量跨度(使用距离)和存活时间(使用范围)。每个变量也应该有它自己单一的用途,不要害怕浪费内存。

《变量名的力量》详细给出了命名的方式,指导思想就是,不要使用短的无意义的名字,使用各种方式来表达变量的意义,甚至具有自描述的功能。使用一些对仗词,实际命名零时变量,状态变量不仅具有意义,并能体现true和false,以方便if()的判断。不同语言也有不同的命名规则,在读程中我们也能体会到这种规则。对于大项目大公司也会有他们自己的一套规则。

《基本数据类型》描述了使用各种数据类型时应该注意的问题。避免“神秘数值(magic number)”是第一条,最好程序本体中只有0和1作为增量、减量、循环开始位等用途。隐式类型转换也是“隐式问题”的根源,避免他们,包括混合类型的比较。
整数的问题集中于数运算变形问题(由于去小数问题)。溢出则是每种数据类型都会面临的问题。
浮点数应避免数量级相差很大的加减运算,小数很可能被忽略,实用的方法是现将小数相加,再与大数相加,以避免过多的小数忽略。等量判断在一般语言中是不准确的,所以十个0.1相加不一定是1,所以对于浮点数比较应该提供一个相似范围。
字符串也不应该出现“神秘字符和神秘字符串”,并且将字符串置于资源中将有助于多国语言的本地化和资源的压缩优化。
布尔型的使用比较简单,使用出错概率比较低,应充分利用它来分类条件,使得判断条件过多的问题得以解决。
枚举类型在良好的编程中是非常有用的,在使用时可以设置第一位(0位)为非法值,第二位(1位)和最后一位作为firstOne和lastOne。

对于结构体、指针、全局数据这些《不常见的数据类型》也做了讨论,但我并不认为这些是不常用的。结构体可以将一组数据group起来,但如果结构体具有自己的属性和方法,就应该考虑使用类了。
指针的使用非常小心,把它的操作封装于类和函数中是不错的方法。
全局变量是不得以才使用的变量,并和一般变量一样,用访问子程序来访问控制(这对全局变量更重要)对于对线程程序,全局变量lock也就显得尤为重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值