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 接口的契约。这样,当我在解决方案资源管理器中看到这两个项目时,它们在视觉上是“结合在一起的”,这有助于让我的头脑保持整洁。当然,合约本身并不是一个接口,所以以这种方式命名它对我来说很糟糕。

在这些情况下,你们(和女孩)如何命名您的合同类?有普遍接受的约定吗?

4

2 回答 2

3

Code Contracts 用户手册同时使用IAnimalContract格式(参见第 2.8 节)和ContractForIAnimal格式(参见第 4.1 节)。因此,代码合约团队自己并不希望您遵循一种特定的风格。

但是,我看到IAnimalContract最常使用的样式,遵循通用命名约定绝对重要。此外,我认为通过查找接口类型名称来快速找到合同类比一起找到所有合同类更有用。

就个人而言,我将合同类保存在与接口相同的文件中,否则我很少这样做。我觉得合同是界面的一部分,应该尽可能接近。

于 2010-08-12T13:04:08.807 回答
1

就我个人而言,我习惯于以“IAnimalContract”的方式命名它们。但是您的观点是,我会说将它们命名为“ContractForIAnimal”,并将它们保存在名为“Contracts”的文件夹中。

这样你就可以很容易地找到你的合同,而且你不会对你的命名约定有那种难闻的气味=)

于 2010-08-12T12:08:52.737 回答