3

我在System.Diagnostics.Contracts命名空間中使用代碼合同類來爲我的對象定義一些合同,我想知道當合同被定義爲基礎時,其他人如何命名合同類接口。讓我說明用一個小例子:接口類型的代碼合同類的命名約定

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

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

在這個例子中,我叫合同類AnimalContract,但有一個更好的名字?因爲契約是根據接口定義的,所以我幾乎想要命名IAnimalContract類來說明它是IAnimal接口的契約。通過這種方式,當我在解決方案資源管理器中看到這兩個項目時,它們可視化地「捆綁」,這有助於使事情保持在我的頭腦中。當然,合同本身並不是一個界面,所以以這種方式命名它對我來說味道不好。

你們(和gals)在這些情況下如何命名你的合同班?有一個公認的慣例嗎?

回答

3

Code Contracts User Manual同時使用IAnimalContract格式(參見2.8節)和ContractForIAnimal格式(見第4.1節)。因此,代碼合同團隊本身並沒有特定的風格希望您遵循。

但是,我發現最經常使用的樣式是IAnimalContract,遵循常見的命名約定是非常重要的。另外,我認爲通過查找接口類型名稱能夠快速找到契約類比查找所有契約類更加有用。

就我個人而言,我將我的合同類保存在與界面相同的文件中,這是我很少做的其他操作。我覺得合同是界面的一部分,應儘可能保持接近。

1

就我個人而言,我習慣以'IAnimalContract'的方式命名它們。但是你的觀點,我會說他們命名爲'ContractForIAnimal',並將它們保存在名爲'Contracts'的文件夾中。

這樣你可以很容易地找到你的合同,你會不會對你的命名約定難聞的氣味=)