Вперед Назад Содержание

10. Ясность использования конструкция C.

Следует явно описывать все аргументы функций. Не надо опускать их, поскольку их тип - int.

Описания внешних функций и функций, которые появляются позднее в исходном файле должны все быть в одном месте в начале файла (где-нибудь до первого описания функции в этом файле), или должны размещаться в заголовочном файле. Не помещайте extern-описания внутри функций.

Зачастую, одна и та же локальная переменная (с именем вроде tem) используется для разных целей внутри одной функции. Лучше, однако, описывать отдельную локальную переменную для каждого конкретного использования и давать ей имя в соответствии с ее смыслом. Это не только увеличивает понимаемость программы, но так же улучшает оптимизации, выполняемые хорошими компиляторами. Вы можете также переместить описание каждой локальной переменной в наименьший блок, включающий все ее использования. Это также делает программу яснее.

Не следует использовать имена локальных переменных или параметров, которые затеняют (перекрывают) описания глобальных переменных.

Не нужно описывать несколько переменных в одном описании, разбитом на несколько строк. Например, вместо:

int foo, bar;
надо писать или:

int foo, bar;
или:
int foo; int bar;
(Если это описания глобальных переменных, каждое из них должно иметь предшествующий комментарий.)

Когда Вы пишите конструкцию if-else, которая вложена в другую конструкцию if, всегда следует помещать скобки вокруг if-else. Никогда не пишите так:

if (foo) if (bar) win (); else lose ();
Вместо этого надо писать так:

if (foo) { if (bar) win (); else lose (); }
Если Вы вкладываете конструкцию if внутрь конструкции else, то или пишите else if на одной строке, как здесь:

if (foo) ... else if (bar) ...
с then-частью, имеющей такой же отступ, как и у предшествующей then-части, или пишите вложенный if внутри фигурных скобок, как здесь:

if (foo) ... else { if (bar) ... }
Не описывайте тек структуры и переменную или typedef в одном описании. Вместо этого следует описывать тег структуры отдельно и затем использовать его для описания переменной или имени типа.

Старайтесь избегать присваиваний внутри условия в конструкции if. Например, не следует писать так:

if ((foo = (char *) malloc (sizeof *foo)) == 0) fatal ("virtual memory exhausted");
Вместо этого надо писать так:

foo = (char *) malloc (sizeof *foo); if (foo == 0) fatal ("virtual memory exhausted");
Не стоит уродовать программу для того, чтобы потакать верификатору lint. Не надо вставлять никаких приведений к void. Ноль без приведения вполне хорош как константа для нулевого указателя.


Вперед Назад Содержание