C#抽象类命名规范

60
在C#中,接口的命名规则是I<myInterfaceName>(例如:IList)。
抽象类是否有命名约定?
如果没有,主要建议是什么?

2
说实话,这只是一个泛称,用来描述类的功能。 - It'sNotALie.
没有公约或最佳实践与抽象类相关联,据我所知。 - Charles Bretana
@DonBoitnott,针对https://dev59.com/z3RC5IYBdhLWcg3wCMnX这个问题,由duDE提出的,请投票关闭。 - Freelancer
2个回答

37

普遍而言,抽象类在命名时不会使用任何后缀或前缀,不像接口需要加上"I"前缀。你只需给你的类一个简短明了的描述它用途的名称即可。


6
我一直见到以"I"为前缀的接口,比如IEnumerable或者ITaxable - JYelton
10
我认为那只是一个语法错误,他的意思是“抽象类没有后缀,不像接口有一个以 I 为前缀的约定。” - Pharap

19
存在一个抽象类的命名约定吗?
没有,这里没有惯例。有一些常见的方式表达抽象基类。我见过最常用的是使用后缀Base。个人而言,我不喜欢这种约定,并且框架指南也不推荐使用它。
那么如果没有,主要的建议是什么?
使用一个描述类所模拟内容的好的通用名称,就像其他类一样。例如: Shape,然后是Polygon,接着是RegularPolygon等等。

19
框架指南在哪里建议不这样做?你链接的是一个框架架构师的博客,并非框架指南:http://msdn.microsoft.com/en-us/library/ms229042(v=vs.110).aspx (该指南似乎没有明确陈述任何一方面的内容)。 - Pharap
10
因为我同意@Pharap的观点,所以被踩了。 - Den
他可能会链接到博客文章,因为《框架设计准则》中的建议在书中第174页,参见https://dev59.com/z3RC5IYBdhLWcg3wCMnX#429494/。 - Johann
2
该约定明确规定,如果它是公共 API,则不应使用“Base”。因此,如果抽象类的预期用途是库内部,则可以使用“Base”来命名。 - HamsterWithPitchfork

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接