class 名称在 Java 中应该有多独特?

How unique should a class name be in Java?

我是否应该避免以牺牲名称简洁性和增加一点复杂性为代价,将我的 类 命名为与其他外部 packages/libraries 中的 类 相同的名称?

例如,在我的应用程序中,我有一个名为 UIComponents 的包,其中包含可重用的组件,GUI 的某些部分可用于执行常见任务。例如表格、网格、Window。由于我正在编写一个模拟器,我是否应该使用 SimForm、SimGrid 和 SimWindow 之类的东西来避免将它们命名为与我使用的某些库中的组件相同?

也许是基于意见,但这就是我的想法:它会令人困惑吗?

当我制作纸牌游戏时,我倾向于有一个名为 Card 的 class。当我第一次尝试在文件中使用它时,我的 IDE 问我,"Do you mean my.package.Card or javafx.smartcardio.Card?" 好吧,显然我对 smartcardio 是什么不感兴趣,所以我使用 Card 作为名字。

现在假设我正在使用 JavaFX 制作房屋设计师。 JavaFX 有一个名为 Window 的 class,我可能会在我的应用程序中使用它。因此,我会说我想避免命名我自己的自定义 window class Window,并使用其他名称,例如 HouseWindow... 或类似的名称.

您可以有任意数量的 class 同名,直到它们都在不同的包中。

在日常生活中,我们尽量让class在每个module/component中都是独一无二的。在极少数情况下,我们将不得不使用完全相同的名称。

如果您的 类 是另一个包中 类 的替换或扩展,并且执行类似的功能,那么完全按照您的建议创建您自己的名称前缀是有价值的。直接在我的代码中看到 SimForm、SimGrid 对我来说是一个非常有用的提醒,我正在使用你的 类 而不是 JDK 类.

虽然您应该检查一些约定,但关于这个主题,在我看来,这取决于您,因为您有责任了解业务细节并编写代码 干净、可读并且能够在未来维护

您的 class 名称应该很容易识别,并且毫无疑问您正在处理的是哪个业务实体,并且每个与您的业务(直接)无关的 class 都应该有一个更好的名称。

即使使用一个库中存在的名称命名您的 class 没有问题,您也应该只在您认为它是正确的名称并且没有其他人能更好地解释这个概念时才这样做.