有哪些类名可能表示需要重构?

Dav*_*Lin 11 refactoring naming

我发现了一些像这样的文章,这些文章表明某些词语永远不应该被用作类名的一部分.当一个类在名称中包含其中一个单词时,表示代码应该被重构或重新设计.

例:

经理

理由:由于几乎所有课程都"管理"某些内容并且"经理"的含义非常广泛,人们可以将很多职责交给"经理"课程,同时仍然能够宣称课程"只有一件事".因此,使用"Manager"命名一个类并没有说明该类实​​际上做了什么.前面提到的文章"命名没有'经理'的Java类",显示了这一点:

例如,使用名为"UrlManager"的类 - 您无法判断它是否汇集URL,操纵URL或审核它们的使用.所有的名字告诉你,这不是一个URL,但它确实与它们一起工作.另一方面,名称"UrlBuilder"可以更好地描述该类的功能.

另一个例子:

帮手

原因:像"ThreadHelper"这样的类名使人们想知道为什么需要它以及为什么它不能只是"Thread"类的一部分.它实际上是适配器还是装饰器?如果是这样,那就这样命名.班级"线程"已经承担了太多的责任吗?如果是这样,重构并为新类赋予有意义的名称."助手"没有说明它正在做什么或它如何帮助.

类名中的其他单词是否表示需要重构或重新设计,应该避免?为什么?

编辑:我认为这些词语经常被使用

  • 它们通常具有广泛的含义
  • 它们几乎适合所有环境
  • 他们阻止设计师考虑更好的设计或名称
  • 人们相信使用它们是可以的

清洁代码一书列出了更多,但没有给出任何理由:

避免使用类名称中的管理器,处理器,数据或信息等字样.

如果有人能为他们提供可能的理由,那就太棒了.

相关问题:

命名类的最佳方法是什么?

R. *_*des 11

Utils.查看Chris Missal的博客文章,了解原因.


Wou*_*ick 8

任何包含不是7位ascii字符的名称.

我真的无法理解甚至编辑印地语人物.

class ??????:?????? ???
{
  // argh.. 
}
Run Code Online (Sandbox Code Playgroud)

  • 英语也不是我的母语.英语不仅是当今的国际语言,它还是程序员的语言,无论你身在何处.我坚持认为非英文名字是代码气味.如果你不掌握英语,你的教育就会吸引大时代(严肃地说,你可以收回你的钱).对于程序员来说这是必不可少的:编程语言,库,文档和网上的许多重要信息都只提供英文版(如果你不会说英语,不会有StackOverflow).在我的监督下,我不会让任何不会说英语的人接触任何代码. (6认同)