大多数面向对象语言的接口名称前面都有一个大写的I,为什么Java不这样做呢?不遵循这个约定的理由是什么?
为了演示我的意思,如果我想要有一个用户界面和一个用户实现,我在Java中有两个选择:
用户类=用户,接口= UserInterface
在大多数语言中:
类=用户,接口= IUser
现在,您可能会争辩说,您总是可以为用户实现选择一个最具描述性的名称,这样问题就解决了,但是Java正在推动POJO方法,并且大多数IOC容器都广泛使用DynamicProxies。这两件事结合在一起意味着您将拥有许多具有单个POJO实现的接口。
因此,我想我的问题可以归结为:“是否值得遵循更广泛的接口命名约定,尤其是考虑到框架的发展趋势?”
发布于 2009-02-12 16:23:44
我不喜欢在接口上使用前缀:
前缀会伤害客户端中的readability.
发布于 2009-02-12 16:05:13
是否真的有区别:
class User implements IUser
和
class UserImpl implements User
如果我们讨论的都是命名约定呢?
就我个人而言,我不喜欢在接口之前使用I
,因为我希望对接口进行编码,并且我认为这在命名约定方面更重要。如果调用接口IUser
,那么该类的每个使用者都需要知道它是一个IUser
。如果你调用类UserImpl
,那么只有类和你的DI容器知道Impl
部件,而消费者只知道他们使用的是User
。
再一次,我因为一个更好的名字没有出现而被迫使用Impl
的次数很少,因为实现是根据实现来命名的,因为这是它的重要之处。
class DbBasedAccountDAO implements AccountDAO
class InMemoryAccountDAO implements AccountDAO
发布于 2009-02-12 16:17:17
Java通常不使用IUser约定可能有几个原因。
https://stackoverflow.com/questions/541912
复制相似问题