e309.c

外部変数にiを使うべからず


修正前 extern int i; /* 外部変数にi等短い名前はダメ */
修正例 static int goodname;

解説 i の様な外部変数は、 他のモジュールから参照/更新出来るため、第3者によって、 あなたが知らないうちに更新されてしまうかもしれません。 又、外部変数はプログラムの文脈とは関係なく突然現れる事が多いため、 保守者を苦しめる事が多々あります。 この対策として、 goodname の様に、static宣言すると、 他のモジュールから参照/更新出来なくなります。 (破壊される事はありますが。。。) 又、保守者から見ればstatic宣言があると、このモジュールから『のみ』 参照/更新出来る事が明確になり、トレースが容易になります。 これらの効果を『隠蔽』といいます。 static宣言のデメリットとして、 (1) 同名別関数/変数が作成できてしまう。 (2) 機械語レベルのデバッグで、 シンボルとアドレスを強く意識する時、不向きな時があります。 このため、プロジェクトの特性に合わせて使用して下さい。