java - Java中的接口(interface)命名

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。
关闭10年前

大多数 OO 语言的接口(interface)名称都以大写 I 为前缀,为什么 Java 不这样做?不遵守此约定的理由是什么?

为了说明我的意思,如果我想要一个用户界面和一个用户实现,我在 Java 中有两个选择:

  1. Class = User, Interface = UserInterface
  2. 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/

相关文章:

java - @RequestParam 和 @PathVariable

java - 单击两次后退按钮以退出 Activity

java - 使模板更容易的 JSP 技巧?

java - 将 Java 连接到 MySQL 数据库

java - 如何在 Mac 上的 IntelliJ IDEA 中增加 IDE 内存限制?

java - 如何使用 apt-get 在 Ubuntu 18.04/17.04/16.10/16.

java - Java中的静态 block

java - 在循环之前或循环中声明变量之间的区别?

Java - 通过 POST 方法轻松发送 HTTP 参数

java - 如何在Java中为正则表达式转义文本