2011-06-28 13 views
1

割り当てられていない文字列を区別するための共通の命名規則はありますか?私が探しているのはうまくいけばus/sから Making Wrong Code Look Wrongまでですが、私はむしろ私のものを作り上げるよりも一般的なものを使いたいと思っています。割り当てられた/割り当てられていない文字列の命名規則

+0

これはおそらく、stackoverflowではなく、プログラマーズ・スタック・エクスチェンジ・コムで終わるはずです。 –

+1

Boy ow boy、変数名の選択がもはやプログラミング活動ではなくなったとき、Stackoverflowは本当に不安定になりつつあります。 –

+1

これはプログラマーではなくSOに属しています。特に言語固有のものです(C)。 –

答えて

1

この記事のus/sの慣習は、やや役立ちますが、大きな点を見逃しています。要点は、変数の命名規則は、ドキュメントとしての誤解から保護することと同じくらい良い点です。例えば

#Version 2 
char* sHello = "Hello"; 
... 100 lines of code ... 
sHello = realloc(sHello, strlen(sHello)+7); 
strcpy(sHello+strlen(sHello), " World"); 
... 100 lines of code ... 
printf("%s\n", sHello); 

あなたが本当にコーディング規約の仕事をしたい場合は、あなたが任意のいくつかの並べ替えに依存することはできません(とに最終的に変更されます

#Version 1 

char* sHello = "Hello"; 
printf("%s\n", sHello); 

はい、彼らはすべての任意の)命名規則です。その命名規則をビルドに失敗する手段でバックアップする必要があります。上記のケースでは、キーワードconstを賢明に使用することでこのトリックが達成されましたが、コーディング規約では、人々が自信を持てるようになるでしょう。

ドキュメンテーションの問題が続き、最終的にコード内のドキュメントがコードと同期しなくなり、コード内の命名規則がこれらの名前の使用と最終的に同期しなくなります。

Cに入力情報を追加する場合は、実際にタイプをcに追加するシステム(typedef)を使用します。次に、タイプが必要なときに使用されていないかどうかを確認し、ビルドに失敗するシステムを配置します。それ以外のものは、あまりにも多くの検索/保守/クリーンアップの費用がかかります。実装されたコーディングスタイルの半分は、悪いコーディングスタイルよりもずっと悪いです。

+2

名前とは異なり、 'typedef'は新しい型を定義しません*既存の型の*別名*を定義します。 Cで新しい型を定義するためのキーワードは、実際には 'struct'です。' struct foo {int n; } a; 'と' struct bar {int n; } b; 'コンパイラは' a = b; 'を代入させません。 – caf

+0

@caf、あなたが正しいです、そして訂正してくれてありがとう。 –

+0

良い点。私は "struct astr {char * s;};/*割り当てられた文字列* /"か、夏休みの後に似たようなものを試してみます。 – hlovdal

関連する問題