代码 2-2:定义常量(<ConstantDemo>\Program.cs)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConstantDemo { class Program { static void Main(string[] args) { const int MAX_NUMBER = 100; Console.WriteLine("最大数值是{0}", MAX_NUMBER); } } }
使用Ctrl+F5运行程序,会显示如下内容:
最大数值是100
2.1.3 高质量代码准则:给变量起个好名字
虽然我们在标题中只提到了变量,但实际上这个准则同样适用于常量名称的定义。在给变量和常量命名时,应注意如下几个问题。
准确描述保存的值是什么
变量和常量的名字应该可以清晰地说明它们的用途和数据内容,它们的名字应该明确说明变量“是什么”,而不是其他的含义。比如,temp就不是一个好变量名,虽然我们可能知道这是一个临时变量,但对它到底用于存放什么数据却不能一目了然。
使用命名标准
在本书的代码中,变量采取的命名规则是一种“驼峰式”的命名方式,即每个单词的首字母大写(但在定义变量时,变量名的首字母小写,后面的每个单词首字母大写,如变量cnnStr);常量采用C风格,即全部采用大写字母,每个单词使用下画线分隔。
关于变量的命名,还有一个中国程序员特有的情况——有的程序员或公司喜欢使用汉语拼音作为变量或常量的名称。按照一些权威的关于命名的指导意见来看,这是很不好的习惯,因为在代码中若使用了英文以外的自然语言,会让代码阅读者或维护者需要一定的适应过程。虽然使用拼音这个情况可能是因为很多程序员英文水平不高所导致,并且可能已有了一系列的使用规则和制度,但我们仍然应该避免使用拼音作为变量或常量的名称。
除了本书中应用的命名标准,在项目中,还可能包括以下命名标准:
● 公共标准,作为公司或项目中的统一标准,要求每一个参与的程序员都遵守。
● 个人习惯,公共标准以外的部分,可能在一些小的代码块中,如一个方法内或语句结构中,在这里可以允许程序员根据自己的习惯和风格来使用变量,只要大家能很容易理解其含义就可以了。
习惯用法
软件开发已经经历了几十年的发展,有很多大家都已经习惯的变量使用方法,比如,使用字母i、j、k作为循环控制变量。对于简单的代码,这些习惯用法依然比较常见,但对于较复杂的算法,为变量起一个更明确的名称,会更利于代码的阅读和维护。我们在讨论循环语句时还会有进一步的讨论。
2.1.4 值类型与引用类型
按照变量在内存中的存储方式,可以将变量分为以下两种形式:
● 值类型,即变量名所指的就是实际的数据值,在表2-1 中的类型里,除了string和object,其他类型均为值类型。DateTime类型为结构(struct),也属于值类型。
● 引用类型,变量名所指的是实际数据值的内存地址,真正的数据就存放在指向的内存区域当中。在C#中,基本的引用类型包括string和object。
在深入的学习中,我们将会看到更多的关于值类型与引用类型在使用上的一些特点,以及它们之间的区别。
2.1.5 字面值
数据的字面值是指数据的直接表现形式,如整数是由0、1、2、3、4、5、6、7、8、9组成的,它们以及它们的组合就是整数类型的字面值。更多内容请参考2.2节。
浮点数类型和decimal类型的字面值可能无法直接区分是float类型、double类型或者是decimal类型,你可以使用直接量加后缀来说明,如1.23F是float类型、1.23D是double类型,而1.23M则是decimal类型。
char类型的字面值应放入一对英文字符的单引号中,如'A'、'a'等。
string类型的字面值应放入一对英文字符的双引号中,如"ABC"、"Hello C#"。关于更多字符串的内容请参考2.6节。