命名约定:动词/名词和英语语法使用指南

Chr*_*s S 17 .net c# naming-conventions

任何人都可以指向一个网站,或者给我一些关于如何选择接口,类甚至与该对象或方法有关的方法和属性的名称的智慧?

这是专门针对Microsoft开发的,因此Java-esque"doGet"等并没有真正使用,但是跨越语言障碍的一些通用规则必须(我会想到)存在.

一个例子可能会有所帮助:我有4个接口名称选择:

IGroupedItem
IGroupableItem
IDataEntity
IGroupedEntity
Run Code Online (Sandbox Code Playgroud)

它们都包含形容词和名词,或者只是名词.看看.NET框架,为了保持一致,似乎必须有某种规则集?除了明显的方法动词.

编辑:虽然示例是一个接口,但我并不仅限于接口.一般准则是类是名词,方法动词,属性名词.我想我的意思是同义词的选择.到处扔"实体"是错误的

Rum*_*iev 20

查看MSDN文章中的命名准则.简而言之:

  • 使用名词作为类名和属性名(很明显)
  • 对于接口名称,从I开始并使用名词和/或形容词来描述行为
  • 使用动词作为方法名称来描述操作

对于您的示例 - IGroupableItem.

  • 可能是因为你可以说某些东西是"可分组的",因为它正在实现界面,但你无法保证它是"分组"的. (6认同)

S.L*_*ott 8

接口是类能够做的事情.不是它什么,而是它能做什么.

IGroupableItem
Run Code Online (Sandbox Code Playgroud)

其他名称描述的是什么事情或者过于模糊而无用.

具体来说,"IDataEntity"在很大程度上毫无意义.毕竟,一切都是数据实体.

  • 虽然不是这么干净但不总是那么干净吗?比照 ICollection,IAsyncResult,IHasXmlNode (3认同)
  • @annakata:一些基础设施名称必须含糊不清.但应用程序名称应该更加具体. (3认同)