用C#(或任何其他语言)命名类

用C#(或任何其他语言)命名类,c#,class,naming-conventions,C#,Class,Naming Conventions,我经常遇到这种情况——有一个简单的类,比如说,文章。还有另一个类,它存储所有文章和关于它们的元信息。我通常把它命名为ArticlesManager。但我读到,在类名中使用诸如Manager、Class之类的词是一种不好的做法。那么,如果Article类位于Models命名空间中,我们应该如何调用它以及我们应该如何调用它的命名空间呢?如何将它命名为ArticleMeta(正如您在问题中所做的那样)?调用“管理器”的最大缺点在那之后,班级倾向于承担太多的责任,并开始违反单一责任原则 例如,考虑一个类

我经常遇到这种情况——有一个简单的类,比如说,文章。还有另一个类,它存储所有文章和关于它们的元信息。我通常把它命名为ArticlesManager。但我读到,在类名中使用诸如Manager、Class之类的词是一种不好的做法。那么,如果Article类位于Models命名空间中,我们应该如何调用它以及我们应该如何调用它的命名空间呢?

如何将它命名为ArticleMeta(正如您在问题中所做的那样)?

调用“管理器”的最大缺点在那之后,班级倾向于承担太多的责任,并开始违反单一责任原则

例如,考虑一个类处理将项目存储在数据库中并将该类命名为“ArticleStore”而不是命名为“ArticleManager”。当下一个程序员需要一个地方翻译文章时,哪一个类更可能最终得到不相关的代码


这并不意味着将某个对象称为“ArticleManager”是不可以的,如果它作为类的名称确实有意义的话,这只是意味着它是一个非常通用的名称,尝试将名称缩小到类实际的用途是一个很好的做法。

简而言之:如果ArticleManager比您能想到的任何其他名称都能提供更好的描述性理解,那么就称它为ArticleManager

首先,你应该正确地设计你的解决方案。如果,在那之后,你的班级被最好地描述为“ArticleManager”,那么就由golly,callit ArticleManager来描述。不要拘泥于命名约定。惯例是作为经验法则存在的,如果有合理的(经过深思熟虑的)理由,就意味着要加以调整(或忽略)


我自己的例子是:在.net中,“不应该公开变量”,这在99%的情况下是正确的。有1%的情况是,如果使用属性会对裸变量造成可测量的性能损失,那么这是不正确的

你在哪里读到的?名称不如类中实际包含的内容重要。如果你有一个类需要这样一个名称,那么它可能表明该类本身的设计中存在不好的做法?那么
杂志
=)或
文章库
就好像手榴弹一样——最短的名称或后缀在描述现实的十码之内是最好的。这让我想起了谷歌的“三个字母的单词”,并找出哪些可能适用于编码约定。