1. 根据定义,全局变量可以出现在整个程序中的任何地方,因此它们的名字应该足够长,具有足够的说明性。对于局部变量使用段名字就够了。
2. 现实中存在许多命名约定或者本地习惯。常见的比如:指针采用以 p结尾的变量名,例如nodep;全局变量用大写开头的变量名,例如 Global;常量用完全由大写字母拼写的变量名,如CONSTANTS等。这些不过是个人的喜好问题,与始终如一地坚持一种切合实际的约定相比,这些特殊规矩并不那么重要。
3. 老的C语言程序员中有一种倾向,就是把很短的执行频繁的计算写成宏,而不是定义为函数。有了新型的机器和编译程序,函数宏的缺点就远远超过它能带来的好处。
4. 应该定义为#define square(x) ((x)*(x))而不是#define square(x) (x)*(x) 这里所有的括号都是必需的。C++ 提供的在线函数既避免了语法方面的麻烦,而且又可得到宏能够提供的执行效率,很适合用来定义那些设置或者提取一个值的短小函数。
5. 把数定义为常数,不要定义为宏。 C程序员的传统方式是用#define行来对付神秘的数值。C语言预处理程序是一个强有力的工具,但是它又有些鲁莽。使用宏进行编程是一种很危险的方式,因为宏会在背地里改变程序的词法结构。我们应该让语言去做正确的工作 。在C和C++ 里,整数常数可以用枚举语句声明,就像上面的例子里所做的那样。在 C++里任何类型都可使用const声明的常数。C语言里也有 const值,但它们不能用作数组的界。这样, enum就是C中惟一可用的选择了。如:
把#define T 1改为
enum
{
T=1
};
(收起)