関数への全ての引数を明示的に宣言してください。それらが単にint
だか
らという理由で省いていけない。
外部関数とソースファイルの後ろに現れる関数の宣言は、ファイルの先頭の近く
一箇所か、ヘッダファイルの中に書くべきだ。関数の中にextern
宣言を
置いてはいけない。
以前、一つの関数内で繰り返し繰り返し異なる値のために(tem
のような
名前で)同じ局所変数を使うのが普通のやり方だった。こうする代わりに、別の
目的毎に別の局所変数を宣言し、意味のある名前を付ける方がより良い。これで
プログラムがより理解しやすくなるだけでなく、良いコンパイラの最適化を促進
するのである。また、局所変数の宣言をそれぞれ、それを全て使用する一番小さ
い領域に入れることができる。こうすると、プログラムがさらにきれいになるの
だ。
大域識別子を隠す局所変数や引数を使ってはならない。
複数行に及ぶ一つの宣言で複数の変数を宣言してはいけない。代わりに、それぞ れ行で新しく宣言を始めなさい。例えば、こうする代わりに、
int foo, bar;
こう書くか、
int foo, bar;
あるいは、こうする。
int foo; int bar;
(もしそれらが大域変数なら、いずれにせよその前にコメントを付けるべきだ。)
他のif
文に入れ子になるif
-else
文があるとき、必ずその
if
-else
の周りに大括弧を付ける。従って、次のように決して書
いてはならない。
if (foo) if (bar) win (); else lose ();
常に次のようにする。
if (foo) { if (bar) win (); else lose (); }
もしelse
文の中に入れ子になるif
文があれば、次のように、
then
部分をその前のthen
部分のように字下げして一行に
else if
を書くか、
if (foo) ... else if (bar) ...
あるいは、次のように大括弧の中に入れ子のif
を書く。
if (foo) ... else { if (bar) ... }
同じ宣言で、構造体のタグや変数、typedefを一緒に宣言してはならない。代わ りに、構造体のタグを別に宣言して、それから変数や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
へのキャストを入れないでください。キャストなしのゼロは、可変
引数の関数を呼ぶときを除くと、ヌル・ポインタ定数として全く結構である。