名前空間の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つのアイテムを見ると、それらは視覚的に「タイアップ」されており、頭の中で物事をきれいに保つのに役立ちます。もちろん、コントラクト自体はインターフェースではないので、そのような名前を付けるのは私には悪臭がします。
このような場合、皆さん(およびギャル)はどのようにコントラクトクラスに名前を付けますか?一般的に受け入れられている規則はありますか?