使用卷曲括号{}来分隔C中的逻辑模块是一个好习惯吗?

Kun*_* Wu 1 c coding-style

我最近发现我的一位程序员写了类似的东西:

int foo()
{
    //some code
    {
        //some code
    }
    //some code
    {
        //some code
    }
    //some code
}
Run Code Online (Sandbox Code Playgroud)

如您所见,两对内部的卷曲括号仅用于逻辑分隔两段代码.虽然我写了一段时间的C,但我从来没有真正看过这样的风格.这被认为是一种好的,或者至少是C中可接受的风格吗?

小智 9

我不认为这是一种特别好的风格 - 它不会过度增加压痕,为线条留下更少的空间,并且平行地降低了可读性.如果你有几个"逻辑模块",你可以用空行分隔它们,比如

/* declarations */
char *str;
size_t size;

/* allocate memory */
size = 16;
str = malloc(size);
if (str == NULL) {
    return -1;
}

/* do actual task */
Run Code Online (Sandbox Code Playgroud)

或者,如果你有大量的代码,你应该考虑重构它并将它们分解成单独的函数.