C#类名以I开头

时间:2012-01-17 11:27:52

标签: c# interface naming-conventions

我正在写一个名字以I开头的类(因为这是我们正在整合的产品的名称 - 不能改变)。

约定声明类名有一个大写字母可以开始,但在这种情况下,它会在消费者看来是一个接口。

是否有任何文档指导开发人员采用正确的方法?另外,如果我确实需要实现和接口会发生什么 - 它应该是IiProduct / IIProduct吗?

编辑添加:

我出于显而易见的原因无法提及该产品,但它遵循与apple相同的大写惯例。 iPhone,因此IPhoneClass(跟随他们的品牌,但显示为接口)而不是IphoneClass(遵循惯例而非品牌)。

6 个答案:

答案 0 :(得分:8)

接口以I作为前缀,然后使用大写字母作为接口名称。因此,界面将为IImposibleProduct,类将为ImposibleProduct

答案 1 :(得分:6)

如果产品名称是例如iPhone,那么在这种情况下,我会调用类Iphone来保持类命名的一致性。界面将是IIphone,看起来不太好,但其含义很明显(按照惯例)。

我确信如果他们认为这是一个界面,那么使用该类的人会更加不安,而不是因为该产品不符合惯例而没有大写。

答案 2 :(得分:2)

如果班级名称以I开头,那么这很好,例如IndexIdea都是有效名称。 IIndex将是一个有效的接口名称。

有关约定的帮助,您可以考虑选择Code Complete的副本,这是许多程序方面的一个惊人的指导来源。

答案 3 :(得分:2)

我遵循这个接口的惯例。

  1. 在界面中找到最重要的方法。
  2. 添加后缀。
  3. 资本第一个字母。
  4. 添加 I 前缀
  5. 参见示例

    interface ICallable{
        public void call();
    }
    

    ICallable = I + CapitlizeFirstLetter(call + able)

    我认为大多数开发人员都遵循这些惯例。从这个角度来看IClassIDoneICallIncomeTax等不是界面。但IClassableICallableITaxable等分别是接口。

答案 4 :(得分:0)

你能否破坏类的名称以确保它不以I?

开头

通常情况下,您希望属于单词的I表示接口。以I开头的类名(例如,Interpolator)很好,并不是特别模糊。

答案 5 :(得分:0)

你可以用“I”大写字母将你的“坏”名字类包装到其他名字 例如:

    //"Bad" name class
public class IBadClass
{
    public void SomeFuncA(int i)
    {
    }

    public void SomeFunctB(string str)
    {
    }
}

//"Better" name class
public class BetterNameClass
{
    private IBadClass _badClass;

    public BetterNameClass()
    {
        _badClass = new IBadClass();
    }

    public void SomeFuncA(int i)
    {
        _badClass.SomeFuncA(i);
    }

    public void SomeFunctB(string str)
    {
        _badClass.SomeFunctB(str);
    }
}