类命名混乱

时间:2009-08-13 21:09:52

标签: class naming-conventions naming

我经常很难决定如何命名一个班级。不是因为班级的目的不明确,而是因为名字像xxx ***控制器***,xxx ***经理***,xxx ***信息***,xxx ***助手*** ,xxx *** Util ***等我到处都看到了。

如果我有一个通过HTTP上传一些内容的类,我倾向于将它命名为HttpUploader或其他内容。我见过许多类似的类被命名为HttpUploadManager,HttpTransmissionController,HttpUploadHelper等等。

我对何时使用Controller,Manager,Info等感到困惑。是否有任何文章或书籍可以帮助我成为更好的课程名称?

PS:另外,与HttpTransmissionController或HttpDispatchManager相比,像HttpSender这样的名字听起来很贫瘠:P

5 个答案:

答案 0 :(得分:12)

命名很难,所以不要担心你会挣扎,因为我们都这么做。相信我,它永远不会变得更容易!

就整个Controller / Manager / Helper / Util / Whatever后缀而言,我倾向于使用规则,如果它是一个约定(例如,对于ASP.NET MVC,控制器类名称以“Controller”结尾)然后使用后缀,否则尝试地狱避免它。我宁愿有一个叫HttpUploader而不是HttpUploadManager的课程。

关于命名最重要的是,该课程应该按照它所说的去做。如果它是使用HTTP上传内容的类,则HttpUploader会完全描述它。使用像HttpUploadManager这样的花哨名称并不能告诉我它的作用。它上传了这个东西吗?它管理多件事的上传吗?我喜欢尽可能地简化事情,同时描述类/方法/其他的目的。

我发现一个很好的指导方针是,如果你真的在努力命名,就像你花了很多年思考,而你仍然无法将它的作用提炼成合理的名字,那么你可能需要重构任何你我试图将其命名为更小,更具体的组件。

答案 1 :(得分:5)

如果您在选择姓名时遇到困难,可以咨询ClassNamer

答案 2 :(得分:4)

关于SO的流行观点似乎是避免使用像Manager,Info,Helper或Util这样的后缀。

请参阅:Smelly Class NamesClass names that need refactoring

答案 3 :(得分:2)

您可以尝试查看更具描述性(色彩鲜艳?)后缀的列表:ManagerManager

通常的建议(将类命名为它所做的)的问题在于,许多类的东西没有好的真实世界等价物,因此我们的传统词汇可能不太匹配。例如,一个HttpUploader可以与另一个类配对,帮助上传,做一些协调,或者(我敢说呢?)管理上传。这种中间人协调在软件中很常见,但描述它的词语都是如此含糊,以至于他们邀请嘲笑。

答案 4 :(得分:2)

本书Clean Code有一整章关于变量名称。好东西。