Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有关于枚举后缀(种类与类型)的指导吗?_C#_.net_Api_Naming Conventions - Fatal编程技术网

C# 有关于枚举后缀(种类与类型)的指导吗?

C# 有关于枚举后缀(种类与类型)的指导吗?,c#,.net,api,naming-conventions,C#,.net,Api,Naming Conventions,我正在设计一个供公众使用的.NETAPI。在我的API中,有一堆枚举,我正在努力确定后缀使用的约定 在.NET framework中,我看到了同时使用“种类”(例如System.DateTimeKind)和“类型”(例如System.IO.DriveType)的示例 查看mscorlib中的公共枚举,我发现“Type”的使用频率更高,但在一些较新的类型中,这两种类型仍然使用,这意味着微软似乎没有遵循任何特定的约定 有人对在我的API中使用什么有什么建议吗?有没有关于这个主题的公开的约定 我倾向于

我正在设计一个供公众使用的.NETAPI。在我的API中,有一堆枚举,我正在努力确定后缀使用的约定

在.NET framework中,我看到了同时使用“种类”(例如
System.DateTimeKind
)和“类型”(例如
System.IO.DriveType
)的示例

查看mscorlib中的公共枚举,我发现“Type”的使用频率更高,但在一些较新的类型中,这两种类型仍然使用,这意味着微软似乎没有遵循任何特定的约定

有人对在我的API中使用什么有什么建议吗?有没有关于这个主题的公开的约定


我倾向于使用“Kind”作为后缀,并保留术语“Type”来处理
System.Type
对象或数据类型。

我从Microsoft知道的有关枚举的唯一命名约定是(从)

  • 枚举类型和值名称使用Pascal大小写
  • 少用缩写
  • 不要在枚举类型名称上使用枚举后缀
  • 对大多数枚举类型使用单数名称,但对位字段的枚举类型使用复数名称
  • 始终将FlagsAttribute添加到位字段枚举类型
它很旧,但没有看到任何与此相关的更新

我认为没有人能告诉你具体问题的“正确”方法,因为这两种选择都是有效的,只是品味的问题

我想说的是,你应该同意团队的共同战略,并坚持下去。我认为每个人使用相同的命名约定比使用哪种命名约定更重要


我个人使用
类型
后缀,但同样,这只是口味的问题。

用描述性名词短语描述枚举是什么(例如,
RegexOptions
DateTimeKind
BorderStyle
,等等)。不要强制使用任意后缀。这个名字应该来自事物本身,但是“种类”和“类型”是可以互换的。我不喜欢在同一件事上使用两个术语的API。最好的建议可能是避免使用任何一个术语。它们都缺乏具体性,也无法传达有意义的信息。有时你的分类会是这样的,相当抽象,但你通常可以用一个更有意义的词,比如Method或Tier,作为你的后缀。试着大声朗读你键入的内容,或者如果英语不是一种你有信心使用的语言,请其他人这样做。有些对象/概念使用“类型”更好,另一些使用“种类”或“模式”或完全不同的东西更好。目标是使代码可读—编写示例用法并大声朗读…
DateTimeKind
DateTimeType
听起来都不错。我不担心它听起来如何(我知道如何让它听起来正确)。我只想在我的API中保持一致性。从某种意义上说,这是API的复制品。我想你可以在那里找到一些指导。强制所有/大多数枚举(或其他类型)具有相同的后缀可能不会提高代码的可编辑性。。。关于
DateTimeKind/Type
,我认为这两种方法都相对不好,因为对于一个人来说,没有办法知道这样的枚举需要什么样的值。但由于时区在口语中并没有被广泛使用,并没有更好的选择。更有用的名称
datetimezone
与表示该概念实例的类冲突。(+1表示罗伯·林登(Rob Lyndon)对试图避免这两种情况的评论)我认为他们可能使用
Kind
而不是
Type
,因为Type通常指
System.Type
。如果在非
类型
的参数名称中使用
类型
后缀,则StyleCop会投诉。。。