C#类名以I开头
本文关键字:开头 | 更新日期: 2023-09-27 18:20:44
我正在编写一个类,其中名称以I开头(因为这是我们正在集成的产品的名称-不能更改)。
公约规定类名的开头有一个大写字母,但在这种情况下,它在消费者看来是一个接口。
这里有没有任何文档可以指导开发人员正确的方法?此外,如果我确实需要实现和接口,应该是IiProduct/IiProduct吗?
编辑添加:
出于显而易见的原因,我不能提及该产品,但它遵循了与苹果相同的资本化惯例。因此,IPhoneClass(遵循其品牌,但显示为一个界面)而不是IPhoneClass(遵守惯例,而不是品牌)。
如果产品名称例如为iPhone
,那么在这种情况下,我将调用类Iphone
以保持类命名的一致性。接口应该是IIphone
,它看起来不太好,但它的含义很清楚(因为它遵循惯例)。
我相信,如果人们认为这是一个接口,而不是因为产品遵循惯例而没有大写,那么使用该类的人会更沮丧。
接口以I
作为前缀,然后以大写字母开头的接口名称。所以接口将是IImposibleProduct
,类将是ImposibleProduct
。
我遵循这个接口约定。
- 在界面中查找最重要的方法
- 添加able后缀
- 第一个字母大写
- 添加I前缀
参见示例
interface ICallable{
public void call();
}
ICallable=I+CapitlizeFirstLetter(呼叫+able)
我认为大多数开发人员都遵循这些惯例。从这个角度来看,IClass
、IDone
、ICall
、IncomeTax
等不是接口。但IClassable
、ICallable
、ITaxable
等分别是接口。
如果类名以I开头,则这是可以的,例如Index
或Idea
都是有效名称。IIndex
将是一个有效的接口名称。
为了获得惯例方面的帮助,您可以考虑购买一份Code Complete,它在许多编程方面都是一个惊人的指导来源。
你能修改类名以确保它不会以I开头吗?
不过,通常情况下,不属于单词的I表示接口。以I开头的类名(例如,Interpolator
)很好,不会特别含糊。
您可以将您的"坏"调用名称类用大写字母"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);
}
}