(约定)C#类名

时间:2009-11-19 02:03:13

标签: c# naming-conventions namespaces conventions

我不太确定我应该对一组分组的类做些什么。

我的情况:我有11个课程只与课程Character.cs有关,但所有这些课程(包括Character.csCharacterManager.cs)都在命名空间Models.Characters内。

这是命名类的更“正确”或首选方式:

(例子):

CharacterDetails.cs CharacterSprites CharacterAppearance CharacterClientRights CharacterServerRights

或:

Details.cs Sprites Appearance ClientRights ServerRights

(他们都在Models.Characters注意到了(例如。Models.Characters.CharacterDetailsModels.Characters.Appearance

提前致谢。

7 个答案:

答案 0 :(得分:6)

就我个人而言,我坚持使用第二种方法,因为这就是命名空间的用途:对相关的类集进行分组。第一种方法是让类名更长,而且好处可以忽略不计。

答案 1 :(得分:6)

就个人而言,它“取决于”。通常我会在所有内容前加上单词Character以保持一致性,但是如果你已经在Character名称空间下的所有内容,那么字符前缀似乎是多余的。

我很容易看到使用Models.Character.[X]的较短约定,如果永远不会有另一个名为Details的类,如果例如UserDetails然后Details并且从现在起几周或几个月回顾代码时,UserDetails会让人感到困惑,我个人更喜欢CharacterDetails选项。

最后,这是您的个人偏好,更准确地描述您的域名Details还是CharacterDetails

答案 2 :(得分:2)

这真的是个人喜好。

我赞成

CharacterDetails
CharacterSprites 
CharacterAppearance 
CharacterClientRights 
CharacterServerRights

因为它更具可读性。

您通常会使用

的使用声明
Models.Characters.Appearance

除非你打算做完整的记法。

我赞成任何可以增加可读性的东西。它可能对项目和您正在使用的团队很重要。如果只是你而不是做你最喜欢的事情,那将来会帮助你维护代码。

答案 3 :(得分:2)

您的命名空间已经在Characters保护伞下对其类进行分组,因此我不会使用Character名字命名您的类。

答案 4 :(得分:2)

这里可能没有正确或错误的答案。我发现自己更喜欢你的第一种风格,但我也使用了第二种风格。我认为在这种特定情况下如果我是你的API的调用者,我会发现阅读使用第一种风格的代码更容易。

答案 5 :(得分:2)

只要您选择一个并且在您的代码中一直使用它,那么您选择的是正确的代码。

我个人的选择是你的第二选择。如果您的命名空间是字符,我认为没有理由在类名中使用前缀字符。

答案 6 :(得分:1)

考虑可能由命名类创建的歧义。例如,如果我有一个名为“Thread”的类表示“CharacterThread”(假设),并且如果某个其他类使用两个名称空间

Models.Characters System.Diagnostics程序

我每次使用它时都必须完全限定线程名称......有时可能很痛苦