代码之家  ›  专栏  ›  技术社区  ›  Matt B

接口类型的代码协定类的命名约定

  •  3
  • Matt B  · 技术社区  · 14 年前

    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接口的契约。这样,当我在SolutionExplorer中看到这两个项目时,它们在视觉上就“结合”起来了,这有助于保持头脑中的整洁。当然,契约本身并不是一个接口,所以用这样的方式命名它对我来说很难闻。

    在这种情况下,你们如何命名合同类?有普遍接受的惯例吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Rich    14 年前

    这个 Code Contracts User Manual 同时使用 IAnimalContract 格式(见第2.8节)和 ContractForIAnimal 格式(见第4.1节)。因此,代码契约团队本身并不希望您遵循任何一种特定的样式。

    IANIMAL合同

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

        2
  •  1
  •   koenmetsu    14 年前

    就我个人而言,我习惯用“IAnimalContract”的方式来命名它们。但我明白你的意思,我会把它们命名为“ContractForIAnimal”,并保存在一个名为“Contracts”的文件夹中。

    这样,您就可以很容易地找到您的合同,并且您就不会对您的命名约定有那么难闻的感觉(=)