【问题标题】:Is it a good practice to have a package/namespace and class within with the same name?有一个同名的包/命名空间和类是一个好习惯吗?
【发布时间】:2011-02-18 15:14:40
【问题描述】:

我正在创建一个新的命名空间,其中一个类最恰当的名称似乎与命名空间相同。这是一个好习惯吗?如果没有,还有什么办法?

例如:

com.person
|--- Person.(java/cs)
|--- PersonDetailChecker.(java/cs)
|--- PersonNameGenerator.(java/cs)

讨论同一问题的相关问题:

【问题讨论】:

标签: c# java naming-conventions


【解决方案1】:

我会尽量避免这种情况,因为它会使您的代码更难阅读 Eric Lippert 写了一篇关于这个的文章,你可以在这里找到:

我自己也犯过几次错误,这确实使我的某些代码更难阅读。

【讨论】:

  • 这篇文章与问题不符:是关于C#(.Net)的问题。在java中,甚至名称是不同的大写(类)和小写(包)。 -- 所以只要你只在 Java 中使用这个包/类,就不应该有任何描述的问题。
  • 该问题不涉及一种特定的语言;当我查看标签时,提到了 Java 和 C#(这在问题中也很明显)。
  • 抱歉我没认出这个
【解决方案2】:

在 Java 中这样做是没有问题的。

但这不是一个好的做法:因为好的做法意味着你应该这样做。 (这显然不是事实。)。

顺便说一句。在 Java 中,类名应该以大写字母开头,包应该只包含小写字母,因为它们永远不会完全相同——这是一个好习惯。

已添加 在重新调整了一段时间后,我认为如果包和类具有相同的名称,则表明架构失败。理由是:一切事物都应该有自己独特的存在理由,名字就应该说明理由。所以如果你有一个包和一个同名的类,那么它存在的原因不是唯一的,或者它的名字不好。

【讨论】:

    【解决方案3】:

    在 Java 中,你的包名应该全部小写,而你的类名应该以大写字母开头,这样一个简单的事实可以保证它们不会发生冲突。如果它们相同,则您一定违反了这些准则之一,这是一个比您的特定问题更根本的风格问题。

    【讨论】:

      【解决方案4】:

      只要情况不同,没问题。但是,一旦您对命名空间和对象使用相同的确切标识符,您最终必须完全限定对该对象的引用(这使得代码相当冗长和丑陋的恕我直言)。

      【讨论】:

        【解决方案5】:

        我会竭尽全力使类名在合理范围内唯一且易于解释,而不管包如何。一个单词的类名很容易混淆,除非它是一个众所周知的、普遍接受的名称,对于一个共同的概念。

        嵌套类在封闭类的名称空间中。人们可能会这样做

        class Http
            class Request
                enum Method
            class Response
                class Code
        
        Http.Request.Method.GET
        new Http.Response.Code(123); 
        

        虽然我觉得这很可读,但我还是会坚持旧的风格

        class Http
        class HttpRequest
        enum  HttpRequestMethod
        class HttpResponse
        class HttpResponseCode
        
        HttpRequestMethod.GET
        new HttpResponseCode(123); 
        

        【讨论】:

          猜你喜欢
          • 2023-03-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多