3

名前空間のCodeContractsクラスを使用しSystem.Diagnostics.Contractsてオブジェクトのコントラクトを定義していますが、コントラクトがベースインターフェイスに対して定義されている場合、他の人がコントラクトクラスにどのように名前を付けるのか疑問に思っています。小さな例で説明しましょう:

[ContractClass(typeof(AnimalContract))]
public interface IAnimal
{
    // definition here
}

[ContractClassFor(typeof(IAnimal))]
public class AnimalContract : IAnimal
{
    // explicit interface implementation here
}

この例では、Contract Class AnimalContractと呼んでいますが、もっと良い名前はありますか?コントラクトはインターフェイスに対して定義されているため、クラスIAnimalContractに名前を付けて、IAnimalインターフェイスのコントラクトであることを示したいと思います。このように、ソリューションエクスプローラーで2つのアイテムを見ると、それらは視覚的に「タイアップ」されており、頭の中で物事をきれいに保つのに役立ちます。もちろん、コントラクト自体はインターフェースではないので、そのような名前を付けるのは私には悪臭がします。

このような場合、皆さん(およびギャル)はどのようにコントラクトクラスに名前を付けますか?一般的に受け入れられている規則はありますか?

4

2 に答える 2

3

コードコントラクトユーザーマニュアルは、IAnimalContractフォーマット(セクション2.8を参照)とContractForIAnimalフォーマット(セクション4.1を参照)の両方を使用します。したがって、コードコントラクトチーム自体が従うことを望んでいる特定のスタイルはありません。

ただし、IAnimalContract最も頻繁に使用されるスタイルを確認し、一般的な命名規則に従うことが間違いなく重要です。さらに、すべてのコントラクトクラスをまとめて検索するよりも、インターフェイスタイプ名を検索してコントラクトクラスをすばやく検索できる方が便利だと思います。

個人的には、コントラクトクラスをインターフェイスとまったく同じファイルに保持します。これは、他の方法ではめったに行いません。契約はインターフェースの一部であり、可能な限り緊密に保つ必要があると思います。

于 2010-08-12T13:04:08.807 に答える
1

個人的には、「IAnimalContract」方式で名前を付けることに慣れています。しかし、あなたの言いたいことは、それらに「ContractForIAnimal」という名前を付け、「Contracts」という名前のフォルダーに保存することです。

このようにして、契約を簡単に見つけることができ、命名規則についてそれほど悪臭を放つことはありません=)

于 2010-08-12T12:08:52.737 に答える