私はFreeBSD のコーディング スタイルを読んでいて、とても気に入っています (縦にコンパクトなコードが好きなので)。ただし、これがあります:
すべての変数
を初期化する 常に変数を初期化する必要があります。いつも。毎回。フラグ -W を指定した gcc は、初期化されていない変数に対する操作をキャッチする場合がありますが、そうでない場合もあります。正当化
信じられないほど多くの問題が、初期化されていないポインタまたは変数に最終的に遡ります。
変数に適切な初期値がない場合は、値を設定しないでおいたほうがよいのではないでしょうか。そうすれば、コンパイラはおそらく初期化されていない読み取りをキャッチします。これはトラップT *p = NULL
表現であり、非常に役立つ可能性があります (またはそうでない可能性があります)。int personal_number = 0 /* but 0 is a valid personal number!!*/
明確にするために、 abasuのコメントに応えて、私の例は、利用可能な無効な値がない場合を説明しようとしています。質問したところ、ありえない値を使用してエラーやその他の状態をマークするのは素晴らしいとの回答がありました。しかし、常にそうであるとは限りません。例はたくさんあります: 8 ビットのピクセル値、速度ベクトルなど。
私が見ることができる「常に変数を初期化する」の有効な代替手段の1つは次のとおりです。
//logical place for declarations
T a;
/*code, for example to set up the environment for evaluating a*/
a = fooForA();
/*more code*/
fooThatUsesA(a);
これにより、初期化を忘れた場合に警告が表示され、バグが修正され、警告が削除されます。