【问题标题】:Naming conventions for Code Contract classes of Interface types接口类型的代码契约类的命名约定
【发布时间】:2010-08-12 21:04:08
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net naming-conventions code-contracts design-by-contract


    【解决方案1】:

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

    但是,我发现IAnimalContract 样式使用最频繁,遵循通用命名约定绝对重要。另外,我认为通过查找接口类型名称来快速找到合同类比仅仅找到所有合同类更有用。

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

    【讨论】:

      【解决方案2】:

      我个人习惯于以“IAnimalContract”的方式命名它们。但是你的意思是,我会说它们命名为“ContractForIAnimal”,并将它们保存在一个名为“Contracts”的文件夹中。

      通过这种方式,您可以轻松找到您的合同,并且您不会对命名约定有那么难闻的气味 =)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 2013-03-13
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多