1

私はStyleCopを使用して、人々が以前に設定されたコード標準に準拠していることを確認しましたが、その後、ニーズに合わせて構成しました。数日間、デフォルト設定でStyle Copを使用して試してみましたが、いくつかのことに少し戸惑っています。たとえば、変数を宣言する場合、それがどのタイプであるかを述べるのが本当に好きです。

 int foo;

また

 Bar foo = new Bar();

varスタイルコップはあなたにキーワードをたくさん使うことを望んでいます。コンパイラとIDEは、イン​​スタンス化によって型を把握できることを理解しています。

  var foo = 1; // Makes foo and int
  var foo = new Bar(); // Makes foo a Bar

宣言とインスタンス化が1つのステップで実行されると、何が起こっているかがかなりわかります。

Style Copが気に入らないことがいくつかあるので、基本的には、標準のStyle Cop構成によって適用されるコーディングスタイルがどれほど一般的で、どこから来ているのかを知りたいだけです。

注:以下のこの使用法varは、hvdで述べられているように無効です。varすぐに少し気分が良くなりました;)。元の質問だったのでそのままにしておきます

しかし、あなたがのようないくつかのあいまいなものを持っている場合

  var foo

     ... bunch of code ...

     foo = getLatestData();

何が起こるかは明らかではありませんfoo。しかし、あなたの宣言を見てfooも、賢くなることはありません。代わりに、関数の宣言を確認する必要がありgetLatestDataます。

varアプローチはすべてを少し曇らせているように感じます。fooそれがであると宣言した場合に得られるような厳密な制御はありませんint。次に、それfoo常にですint。データの取得元には依存しません。このようなものは、2つの異なるタイプのfooを非常にうまく与える可能性があります。

var foo;

...

if(status == 0) {
  foo = getLatestData();
}
else {
  foo = getOtherData();
}

2つの関数が同じ型を返す必要があるfooため、異なるものになる可能性があることを強制するものは何もありません。すべてを自分でコーディングし、それがこのように含まれている場合、おそらく追跡するのは簡単です。しかし、それがAPIまたはプラグインライブラリである場合、外部のサードパーティ開発者がタイプを冷静に指示するfooと、その場合はどうすればよいかわからないため、悪夢になります。

4

1 に答える 1

0

varあなたの質問には、コメントで取り上げられ、リンクされたMSDNリファレンスで明らかにされているいくつかの誤解があります。

実際の質問に関しては、デフォルトのスタイルコップルールセットによって適用されるコードスタイルは、少なくともデフォルトのスタイルコップルールセットの使用法と同じくらい一般的であると推測します。この答えはもちろんトートロジーですが、質問の残りの部分については正しいです。

キーワードについてさらに懸念がある場合はvar、このテーマに関する既存の回答の多くを参照できます。ここではStackOverflowをご覧ください。

于 2012-08-10T08:17:34.113 に答える