Class naming chaos
我经常在决定如何命名一个类上挣扎。这并不是因为课程的目的不清楚,而是因为我到处都能看到诸如xxx**controller**、xxx**manager**、xxx**info**、xxx**helper**、xxx**util**等名称。
如果我有一个类通过HTTP上载一些内容,我倾向于将其命名为httpuploader或那些行上的内容。我见过许多类似的类被命名为httpuploadmanager、httpTransmissionController、httpuploadHelper等的实例。
我对什么时候使用控制器、管理器、信息等有点困惑。有没有什么文章或书籍可以帮助我成为一个更好的班级命名者?
另外,与httpTransmissionController或httpDispatchManager相比,httpSender这样的名称听起来很糟糕:p
命名很难,所以不要担心你会挣扎,因为我们都会。相信我,再容易不过了!
对于整个控制器/manager/helper/util/不管后缀是什么,我都倾向于使用这样一个规则:如果它是一个约定(例如,对于ASP.NET MVC,它是控制器类名称以"controller"结尾的约定),那么使用后缀,否则尽量避免使用它。我更愿意有一个叫做
关于命名,最重要的是类应该按照它所说的做。如果它是一个使用HTTP上载某些内容的类,那么
我发现,一个很好的指导原则是,如果你真的很难说出某个东西的名字,比如你花了很多时间思考,但你仍然无法将它提取成一个合理的名字,那么你可能需要将你试图命名的东西重构成更小、更具体的组件。
如果您在选择名称时遇到困难,可以咨询类名。
因此,流行的观点似乎是避免使用像manager、info、helper或util这样的后缀。
请参见:需要重构的臭类名和类名。
这本书的干净代码有一整章关于变量名。好东西。
你可以试着看一个更具描述性的列表(彩色?)后缀也是:managerManager。
通常的建议的问题是,一个类所做的许多事情都没有很好的现实世界等价物,因此我们的传统词汇可能不匹配。例如,httpuploader可以与另一个帮助上传、进行一些协调的类配对,或者(我敢这样说吗?)管理上载。这种中间人协调在软件中很常见,但是描述它的词语都非常含糊,以致于它们会招致轻蔑。