使用相同名称的包/名称空间和类是一个好习惯吗?

时间:2011-02-17 19:59:22

标签: c# java naming-conventions

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

例如:

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

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

  

5 个答案:

答案 0 :(得分:4)

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

我自己犯了几次错误,这肯定让我更难以阅读我的一些代码。

答案 1 :(得分:2)

在Java中执行此操作没有问题。

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

顺便说一句。在Java中,类名应该以大写字母开头,而包应该只包含小写,因为它们永远不会相同 - 这是一种很好的做法。

<强>加 经过一段时间的重新思考后,如果包和类具有相同的名称,我认为它表示架构失败。原因是:一切都应该有自己独特的存在理由,其名称应该说明原因。因此,如果您有一个包和一个具有相同名称的类,那么它的现有原因并不是唯一的,或者它的名称是坏的。

答案 2 :(得分:1)

在Java中,简单的事实是您的包名称应全部为小写,并且您的类名称应以大写字母开头,以保证它们不会发生冲突。如果它们是相同的,那么您必须违反这些指导原则之一,这是一个比您的具体问题更为基本的风格问题。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我会尽我所能,在合理的范围内使类名独一无二,并且不言自明。具有一个单词的类名称非常令人困惑,除非它是一个众所周知的,通常被接受的名称,用于一个共同的概念。

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

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);