Следует явно описывать все аргументы функций. Не надо опускать их, поскольку их тип - 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. Ноль
без приведения вполне хорош как константа для нулевого указателя.