4

現在、プロジェクトをC#2.0 / VS2005からC#3.0/VS2008にアップグレードしています。アップグレードの一環として、コーディング標準ドキュメントにいくつかの項目を追加しています。

C#2.0 / VS2005からC#3.0 / VS2008にアップグレードするときに、コーディング標準ドキュメントをどのように変更しましたか(または変更しましたか)?

4

5 に答える 5

7

あなたは以下についてアドバイスを与えることができます/すべきです:

  • クエリ式とドット表記を使用する場合
  • ラムダ式の使用に関する制限(たとえば、「キャプチャされた変数を変更しないでください)。これは、もちろんC#2の無名メソッドにも適用できます)。
  • 拡張メソッドを作成するタイミング
  • 暗黙的に型付けされた変数を使用する場合(var

これらの最後の2つは、特にいくつかの論争を引き起こしvarます。

規則に設計ガイドラインが記載されている場合は、以前は継承またはインターフェイスを使用していた可能性がある特殊化のためにデリゲートを使用することを検討することもプログラマーにアドバイスすることをお勧めします。この良い例は並べ替えです。の実装を作成するよりも、射影を使用して並べ替え順序を指定する方が簡単です(そして読みやすくなります)IComparer<T>

于 2008-12-04T09:32:24.577 に答える
2

アップグレードは新しいプロジェクトと同時に行われたため、移動したときに、コーディング標準を変更したStyleCopやFxCopなどのツールを使い始めました。また、それはそれらも手軽に強制します:o)

于 2008-12-04T09:05:13.023 に答える
1

LINQ式、レイアウト、Lambdaとクエリ構文などの新機能に関するコーディング標準を確認する必要があるかもしれませんが、アップグレードによってそれ自体は何も変更されないはずです。

于 2008-12-04T09:24:55.527 に答える
1

私の個人的な不満は、var「可能な限り」を使用することです。

「可能性がある」は現在、次のいずれかのケースとして定義されています。

明らかな、DRY の支援:

var obj1 = new Something();
var obj2 = (Something)ObscureFunction();
var obj3 = ObscureStuff() as Something;

守られて、それがコンパイルされる限り、私は気にしません:

var obj4 = ObscureFunction();
foreach(Something s in obj4) { ... }

複雑なジェネリックとほぼすべての LINQ の結果:

var obj5 = ctx.GetQuery<Something>()..ToList(..)..GroupJoin(..)...ToLookup(...);
于 2008-12-04T17:42:46.927 に答える
0

2008 年の新機能に対する私の基準:

  • var は、匿名型でのみ慎重に使用してください。
  • デリゲートよりもラムダ式を使用することをお勧めします。
  • ソース コードを制御できない場合にのみ拡張メソッドを使用する
于 2008-12-04T17:20:04.693 に答える