大多数 OO 语言的接口(interface)名称都以大写 I 为前缀,为什么 Java 不这样做?不遵守此约定的理由是什么?
为了说明我的意思,如果我想要一个用户界面和一个用户实现,我在 Java 中有两个选择:
- Class = User, Interface = UserInterface
- Class = UserImpl, Interface = User
在大多数语言中的位置:
Class = User, Interface = IUser
现在,您可能会争辩说,您总是可以为用户实现选择一个最具描述性的名称,问题就消失了,但是 Java 正在插入一种 POJO 方法,并且大多数 IOC 容器都广泛使用 DynamicProxies。这两件事加在一起意味着您将拥有许多接口(interface)和一个 POJO 实现。
所以,我想我的问题可以归结为:“是否值得遵循更广泛的接口(interface)命名约定,尤其是考虑到 Java 框架的发展方向?”
最佳答案
我不喜欢在接口(interface)上使用前缀:
前缀会影响可读性。
在客户端中使用接口(interface)是标准的最佳编程方式,因此接口(interface)名称应尽可能短且悦耳。实现类应该更难看以阻止它们的使用。
当从抽象类更改为接口(interface)时,带有前缀 I 的编码约定意味着重命名所有出现的类 --- 不好!
https://stackoverflow.com/questions/541912/