在不同的包中有两个同名的类是不好的做法?

Pau*_*zie 11 java coding-style packages

我们已经拆分了应用程序,以便程序包A处理来自一个外部源和来自另一个外部源的数据包.在这两种情况下,我们都需要创建一个域对象并使用"Transformer"来执行此操作.

所以我有com.foo.bar.a.ThingTransformercom.foo.bar.b.ThingTransformer

我怀疑这是不好的做法,但想看看SO的优秀人才.

Joa*_*uer 17

我不会说它总是一个不好的做法,但它有点代码味道.

如果两个类都做不同的事情,那么为什么它们没有不同的名字呢?

如果两个类都做同样的事情,那么为什么有两个类呢?

从实际的角度来看,如果这两个类需要在同一个类中引用它会变得非常烦人:你必须使用FQN作为其中之一(在这种情况下最好将它用于两者)为清楚起见).如果这两个类在代码的相当不同的部分中,它们将不会从相同的代码中引用,那么实际问题就不那么糟糕了.


Op *_*kel 7

并非真正糟糕的做法,因为许多领域都有类似的术语,所以你最终会有相同的名字.另一方面,如果两者都在同一个域中,但只是不同的实现,您可以(以某种方式)指示名称中的实现细节.
非常难看的是如果你必须在同一个源文件中使用它们,在这种情况下你必须使用至少一个完全限定的名称.

例子:

java.util.List java.awt.List

表示名称中的实现:
java.util.ArrayList
java.util.LinkedList


Gra*_*and 5

没关系.这正是设计上不同包具有不同命名空间的原因.