Форматирование исходного кода должно отвечать структуре программы. В C используется понятие вложенности: операторы находятся в теле функции, каждый оператор if
, while
, switch
, do .. while
создает новый уровень вложенности. Операторы, принадлежащие различным уровням, должны выделяться с помощью соответствующих отступов.
Пример:
int main() /* 0-й уровень */
{ /* 0-й уровень */
printf("hi\n"); /* 1-й уровень */
if (f() == 2) /* 1-й уровень */
do_something(); /* 2-й уровень */
else { /* 1-й уровень */
do_other(); /* 2-й уровень */
do_this_after_all(); /* 2-й уровень */
} /* 1-й уровень */
} /* 0-й уровень */
Одна строка — один оператор.
Если какой-то стиль выбран (см. ниже), следует придерживаться его неукоснительно.
int main(int argc, char *argv[])
{
...
while (x == y) {
something();
somethingelse();
if (some_error)
do_correct();
else
continue_as_usual();
}
finalthing();
...
}
while (x == y)
{
something();
somethingelse();
}
finalthing();
void MyFunc ()
{
while (x == y)
{
something();
somethingelse();
}
finalthing();
}
Другой пример:
if (data != NULL && res > 0)
{
if (!JS_DefineProperty(cx, o, "data", STRING_TO_JSVAL(JS_NewStringCopyN(cx, data, res)),
NULL, NULL, JSPROP_ENUMERATE))
{
QUEUE_EXCEPTION("Internal error!");
goto err;
}
PQfreemem(data);
}
else if (!JS_DefineProperty(cx, o, "data", OBJECT_TO_JSVAL(NULL),
NULL, NULL, JSPROP_ENUMERATE))
{
QUEUE_EXCEPTION("Internal error!");
goto err;
}
static char *
concat (char *s1, char *s2)
{
while (x == y)
{
something ();
somethingelse ();
}
finalthing ();
}
while (x == y)
{ something();
somethingelse();
//...
if (x < 0)
{ printf("Negative");
negative(x);
}
else
{ printf("Positive");
positive(x);
}
}
finalthing();
for (i = 0; i < 10; i++) {
if(i % 2 == 0) {
doSomething(i); }
else {
doSomethingElse(i); } }