哪些类名表明需要重构? [关闭]

2023-11-25

我发现了一些类似的文章this one,这表明某些单词永远不应该用作类名的一部分。当一个类的名称中包含这些单词之一时,就意味着应该重构或重新设计代码。

Example:

Manager

原因:由于几乎所有类都“管理”某些东西,并且“经理”的含义非常广泛,因此人们可以将很多职责交给“经理”类,同时仍然可以声称该类“只做一件事”。因此,用“Manager”命名一个类并不能说明该类的实际用途。前面的文章提到,“在没有‘管理器’的情况下命名 Java 类”,表明了这一点:

例如,以一个名为“UrlManager”的类为例,您无法判断它是否池化 URL、操作 URL 或审核它们的使用。从名称可以看出,这不是一个 URL,但它确实可以与它们一起使用。另一方面,名称“UrlBuilder”可以更好地描述该类的功能。

另一个例子:

Helper

原因:像“ThreadHelper”这样的类名让人想知道为什么需要它以及为什么它不能只是“Thread”类的一部分。它实际上是适配器还是装饰器?如果是这样,就这样命名。 “Thread”类是否已经承担了太多责任?如果是这样,请重构并为新类指定一个有意义的名称。 “帮助者”没有提及它在做什么或如何提供帮助。

类名中还有哪些其他单词表明需要重构或重新设计并且应该避免?为什么?

编辑:我认为这些词自从

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

这本书干净的代码列出了更多但没有给出原因:

类名中应避免使用 Manager、Processor、Data 或 Info 等词。

如果有人能为他们提供可能的原因,那就太好了。

相关问题:

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


Utils。检查一下克里斯·弥撒尔的博客条目为什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪些类名表明需要重构? [关闭] 的相关文章

  • 命名 PowerShell 动词的良好准则是什么?

    我还处于 PowerShell 学习的早期阶段 我想知道 Posh 中针对 cmdlet 或高级函数 无论它们在 CTP3 中如何称呼 的动词是否有一些好的指导方针 如果我使用 get 动词 我可以看到很多 但我仍然不确定应该如何布局我的模
  • 如何通过多态优雅地转换 switch+enum

    我正在尝试用类型类替换简单的枚举 也就是说 从每种类型的基派生一个类 例如 而不是 enum E BASE EB ALPHA EB BRAVO E BASE message someMessage switch message case E
  • Eclipse:“重构 - 重命名”完全混乱,替换文件中的任意字符

    在重构类名时 Eclipse 最近表现出非常奇怪的行为 例如 让我们看一下我们的一个课程 public class CampaignCSVPanel extends ContentPanel private FileUploadField
  • 多少个构造函数参数就太多了? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 假设您有一个名为 Customer 的类 其中包含以下字段 UserName Email 名 姓 我们还可以说 根据您的业务逻辑 所有 Cust
  • 如果只使用一次本地函数,那么使用它们还有什么意义吗?

    想象一下我有这样的代码 public void Foo Do bar work Do baz work Do foobar work 我意识到我可以 而且应该因为它做了不止一件事 将其重构为 public void Foo bar baz
  • 如何从我的代码中删除重复项

    我有两个类似的方法 其中一个打印一些东西 其中一个保存一些东西 正如你所看到的 有很多重复的代码 我应该如何重构它并删除这种重复 public static void printSomething List
  • 使用 JSch 库在 Java 中获取会话和 SFTP 通道

    我正在使用 JSch 库进行 SFTP 我需要在 SFTP 服务器上执行多项操作 例如移动其他目录中的远程文件 拉取文件等 对于我需要的所有这些操作Session我从中得到Channel然后将其投射到ChannelSftp 这是多余的步骤
  • 解释重构[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Question 我的问题是如何教授整理和重构代码的方法和重要性 背景 我最近正在为一位同事进行代码审查 他们对早已消失的同事工作做了一些
  • 使用“is”来命名布尔变量是不好的做法吗?

    现在命名以 is 开头的布尔值是不好的做法吗 我的经理认为 isAnything 已经过时且糟糕的做法 这是真的 myManager isLame correct incorrect 它在很多语言中都经常使用 但我不知道是否可以肯定地说它是
  • 在 WinForms 中保留对控件的全局引用以访问 GUI 线程

    这个问题有一点历史 请耐心听我说 In this https stackoverflow com questions 192980 boiler plate code replacement is there anything bad ab
  • 分割seeds.rb文件[重复]

    这个问题在这里已经有答案了 My seeds rb文件变得非常大 重构文件中数据的最佳方法是什么 我可以将数据放入各种文件中吗 require他们在seeds rb file 我们将所有种子存储在文件夹中db seeds并在里面db see
  • 使用 Qt,有哪些好方法可以分解包含 GUI 逻辑的大型源文件?

    我正在使用 Qt 5 开发一个 C 项目 它有一个包含大量 UI 元素的复杂窗口 该窗口是使用 Qt Designer 设计的 并从 UI 文件加载 我发现 Qt 的典型模式是在其主类中编写窗口 UI 的所有逻辑 即他们文档中的 单一继承方
  • 在 IntelliJ 中重新排序 Java 类方法的简单方法?

    在 IntelliJ 中 是否有比手动剪切和粘贴代码更简单的方法来重新排序类源文件中的方法 现在我在重构遗留代码时经常需要这个 例如将源代码中的相关方法移至彼此靠近的位置 在 Eclipse AFAIK 中 有一个类似于 IntelliJ
  • 使用 intelliJ 将字符串串联重构为 StringBuilder

    我被指定对一个项目进行重构 我遇到了这种情况 this path DESTINY deploy name FILE SEPARATOR delivery getSystem getCode FILE SEPARATOR delivery g
  • 使用 shoulda 重构 Rails 模型上的 rspec 测试

    了解后应该匹配器 https github com thoughtbot shoulda matchers通过回答关于属性可访问性测试的另一个 StackOverflow 问题 https stackoverflow com a 11849
  • TFrame继承重构

    我提出的另一个 TFrame IDE 注册组件问题 感谢各位程序员的帮助 尝试 Darrian 的 TFrame 继承建议here https stackoverflow com questions 382562 delphi visual
  • Pycharm重构-函数内部重命名

    在 Pycharm 中 可以使用 shift F6 键轻松地在项目范围内重命名变量来重构重命名变量 但它无法在函数内执行此操作 解决方法是使用搜索替换 但由于我已经习惯了重构重命名 我想找到一种在函数内部重构重命名的方法 谢谢阅读 PyCh
  • 在列表中查找匹配项的最简洁方法

    在列表中查找内容的最佳方式是什么 我知道 LINQ 有一些不错的技巧 但我们也可以获取有关 C 2 0 的建议 让我们对这个常见的代码模式进行最佳重构 目前我使用这样的代码 mObjList is a List
  • 如何命名变量

    您使用什么规则来命名变量 哪里允许使用单字母变量 你在名字中加入了多少信息 例如代码怎么样 你最喜欢的无意义变量名是什么 在 foo 和 bar 之后 为什么它们被拼写为 foo 和 bar http en wikipedia org wi
  • 如何在存储过程中查找数据表列引用

    我更改了 SQL Server 2005 数据库表中的列名称 我还有一个相当大的存储过程集合 它们可能引用也可能不引用该列 有没有办法找到哪些存储过程引用该列 而无需实际遍历每个存储过程并手动搜索它 有没有办法自动查找哪些存储过程现在会中断

随机推荐

  • Django REST Framework POST 嵌套对象

    我现在面临一个小问题Django 休息框架 我正在尝试发布一个其中包含嵌套对象的对象 这是我的serializers py class ClassSerializer serializers ModelSerializer class Me
  • 如果在 64 位代码中使用 32 位 int 0x80 Linux ABI 会发生什么?

    int 0x80在 Linux 上总是调用 32 位 ABI 无论从什么模式调用 args inebx ecx 以及来自的系统调用号 usr include asm unistd 32 h 或者在没有编译的 64 位内核上崩溃CONFIG
  • 使用 css 仅选择表格中的第一行

    我在 HTML 页面中有很多表 其中一些仅使用tr td其他人正在尽其所能 thead tbody tfoot tr th td 由于某些问题 我们使用 CSS 规则来制作表格的顶部和左侧边框以及每个td有自己的右边框和下边框 因为这个特殊
  • 从 Haskell 中的“Maybe a”返回类型获取“a”值

    我有一个 Haskell 函数eval WExp gt Memory gt WValue对于不同的情况有一堆不同的实例 目前 有关知识WExp Memory and WValue不相关 我的问题是 对于一个特定的实例eval 我正在使用lo
  • 测试使用 ActiveRecord 模型的 gem

    我编写了一个 gem 如果您传入 ActiveRecord 模型 它会将数据导入到您的数据库中 例如 importer Importer new Widget importer import data source 有没有好的方法来测试这个
  • 如何使用绑定源判断用户是否修改了数据?

    我有一个绑定到绑定源的 DataGridView 该绑定源又绑定到List
  • XAML 和 WPF - 将变量传递到 XAML Windows

    我对 WPF 还很陌生 我正在尝试加载一个 XAML 窗口并在其构造函数中将一个变量传递给此 XAML 因为我需要它从这个传递的变量中加载一些项目 有人能给我指出如何解决这个问题的方向吗 如何启动 XAML 窗口并给它一个变量 提前致谢 埃
  • 如何将 qm 文件转换为 ts 文件?

    我正在使用 Qt 4 5 来翻译 ts文件到一个 qm文件 但现在我已经失去了 ts file 我怎样才能把它转换回来 从 qm to ts 使用lconvert lconvert compiled qm o source ts
  • 从秩亏矩阵中提取线性独立行的例程

    我正在努力解决以下问题 我有一些非常大的矩阵 例如 至少2000x2000 并且可能将来它们甚至会达到10000x10000 并且等级非常小 2或3 称之为N 我需要找到一个高效的Python例程来从中提取线性独立的行 或列 矩阵是对称的
  • 更改应用程序区域设置后如何获取设备区域设置

    我正在根据用户选择更改应用程序区域设置 独立于设备区域设置 using public void setDefaultLocale Context context String locale Locale appLoc new Locale
  • 使用 Flexbox 的全宽和多列

    我正在尝试创建一个flexbox同一容器上有全角行和多列 我试过了flex break after 但不确定我错过了什么 我试图避免有多个类 例如 fullwidth and multiple columns 这就是我想要实现的目标 ite
  • Java 中的“无法映射的编码字符”警告

    我目前正在开发一个 Java 项目 该项目在编译时发出以下警告 src com myco apps AppDBCore java 439 warning unmappable character for encoding UTF8 java
  • 如何解决本地主机的“idpiframe_initialization_failed”问题?

    这是我的初始化代码 function HandleGoogleApiLibrary Load client auth2 libraries gapi load client auth2 callback function Initializ
  • gem install Rails 错误:执行 gem 时 ... (Errno::EACCES)

    我不知何故弄乱了我的 PATH 更改了它 并且我的红宝石和 Rails 宝石无法工作 为了解决这个问题 我所做的就是重新安装 RVM 现在我的红宝石在终端中运行良好 跑步时gem install rails我受到这样的欢迎 Permissi
  • 在WebGL中将大数组传递到uniform中

    想知道是否可以将大型数组传递到 WebGL 着色器中 如下所示 array here uniform vec4 huge mydynamicarray void main iterate through the array here to
  • 写入控制台和文本文件

    我从互联网上找到了下面的代码 可以工作 但它不会将打印的控制台写入 omt txt 它只写入System out println第二个 catch 块之后的语句 如果您运行一次代码 您就会明白我的意思 我想要的就是将控制台上的内容写入 om
  • 使用 PostGIS 将点转换为多边形

    我想使用 PostGIS 创建一个多边形表 表中的每一行 point 有三分ID Table point location 有点的位置信息 我用谷歌搜索了这个问题但没有找到答案 下面的代码有什么问题 SELECT ST GeomFromTe
  • 如何在 pygame 中找到两点之间的角度?

    我正在用 Pygame 用 Python 编写一个游戏 我的显示窗口的 坐标是 0 0 在左上角和 640 480 在右下角 角度是 0 当指向上方时 90 当指向右侧时 我有一个位于中心位置的玩家精灵 我希望枪上的炮塔指向玩家 我该怎么做
  • 将 API 调用与 RX Java 相结合

    我是 RXJava 的新手 我无法理解如何将 API 调用的结果链接在一起 我正在使用改造进行两个 API 调用 A 和 B 它们都返回一个可观察的对象列表 两个 API 调用都是独立的 因此我想同时进行这两个调用 但为了实现最终结果 我需
  • 哪些类名表明需要重构? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我发现了一些类似的文章th