在整个文件中的不同位置定义静态全局变量是不好的做法吗?

时间:2012-06-28 21:00:05

标签: c coding-style

当我第一次开始编程时,我总是遵循在文件顶部定义全局变量的惯例,如:

static int a[10];
static int b[10];

void firstFn(void)
{
    a[0] = 1;
}

void secondFn(void)
{
    b[4] = 2;
}

void thirdFn(void)
{
    b[5] = 2;
}

但是最近我正在开展一些工作,我希望将全局变量的定义与一些函数分组,这些函数对文件中进一步定义的变量进行操作:

static int a[10];

void firstFn(void)
{
    a[0] = 1;
}

static int b[10];

void secondFn(void)
{
    b[4] = 2;
}

void thirdFn(void)
{
    b[5] = 2;
}

另一位程序员正在审查这段代码并说这是他的一个小小的烦恼。是否有充分的理由坚持最顶级的惯例?

1 个答案:

答案 0 :(得分:4)

静态变量是编译单元的本地变量。他们的位置绝对没有区别,只要他们在首次使用该程序之前被宣布。

虽然没有纯技术理由将静态声明保留在文件的顶部,但这是一个相当广泛的惯例。我已经看到它在几家公司的编码标准中明确写出来了。当所有程序员遵循相同的约定时,代码看起来更加统一,一致性是代码可维护性的重要一步。当其他人打开您的文件并且代码格式看起来很熟悉时,这是一个很好的补充。因此,如果您团队中的其他同事遵循此惯例,您也应该遵循此惯例。