【问题标题】:How unique should a class name be in Java? [closed]Java 中的类名应该有多独特? [关闭]
【发布时间】:2016-05-18 20:05:49
【问题描述】:

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

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

【问题讨论】:

  • 一旦你的类在不同的包中——很好,如果是相同的包——你有类路径冲突,这可能导致史诗般的失败
  • 足够独特,不会与可能与它一起使用的类发生冲突。例如,不要将其命名为与任何基本 JVM 类相同(如 StringBuilder
  • 我倾向于不担心相同的名称,直到我发现自己由于从其他地方导入/使用相同的命名类而不得不指定完整的 package.class 名称。然后,我重命名以避免丑陋!

标签: java class naming convention


【解决方案1】:

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

当我制作纸牌游戏时,我倾向于有一个名为Card 的类。当我第一次尝试在文件中使用它时,我的 IDE 会问我:“你的意思是 my.package.Card 还是 javafx.smartcardio.Card?”好吧,显然我对什么 smartcardio 都不感兴趣,所以使用 Card 作为名称对我来说不是问题。

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

【讨论】:

    【解决方案2】:

    尽管您应该检查一些约定,但在我看来,这取决于您,因为您有责任了解业务细节并让您的代码干净、可读且能够在未来维护

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        在日常生活中,我们尝试使每个模块/组件中的类独一无二。在极少数情况下,我们将不得不使用完全相同的名称。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-08
          • 1970-01-01
          相关资源
          最近更新 更多