現在、プロジェクトをC#2.0 / VS2005からC#3.0/VS2008にアップグレードしています。アップグレードの一環として、コーディング標準ドキュメントにいくつかの項目を追加しています。
C#2.0 / VS2005からC#3.0 / VS2008にアップグレードするときに、コーディング標準ドキュメントをどのように変更しましたか(または変更しましたか)?
現在、プロジェクトをC#2.0 / VS2005からC#3.0/VS2008にアップグレードしています。アップグレードの一環として、コーディング標準ドキュメントにいくつかの項目を追加しています。
C#2.0 / VS2005からC#3.0 / VS2008にアップグレードするときに、コーディング標準ドキュメントをどのように変更しましたか(または変更しましたか)?
あなたは以下についてアドバイスを与えることができます/すべきです:
var
)これらの最後の2つは、特にいくつかの論争を引き起こしvar
ます。
規則に設計ガイドラインが記載されている場合は、以前は継承またはインターフェイスを使用していた可能性がある特殊化のためにデリゲートを使用することを検討することもプログラマーにアドバイスすることをお勧めします。この良い例は並べ替えです。の実装を作成するよりも、射影を使用して並べ替え順序を指定する方が簡単です(そして読みやすくなります)IComparer<T>
。
アップグレードは新しいプロジェクトと同時に行われたため、移動したときに、コーディング標準を変更したStyleCopやFxCopなどのツールを使い始めました。また、それはそれらも手軽に強制します:o)
LINQ式、レイアウト、Lambdaとクエリ構文などの新機能に関するコーディング標準を確認する必要があるかもしれませんが、アップグレードによってそれ自体は何も変更されないはずです。
私の個人的な不満は、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 年の新機能に対する私の基準: