大多数OO语言在其接口名称前加上大写字母I,为什么Java不这样做?不遵循此约定的理由是什么
为了说明我的意思,如果我想要一个用户界面和一个用户实现,我有两种Java选择:
- 类=用户,接口=用户接口
- Class=UserImpl,Interface=User
在大多数语言中:
类=用户,接口=IUser
现在,您可能会争辩说,您总是可以为用户实现选择一个最具描述性的名称,这样问题就解决了,但是Java正在推动POJO方法,而且大多数IOC容器都广泛使用DynamicProxies。这两件事加在一起意味着,您将有许多接口与单个POJO实现一起使用
因此,我想我的问题可以归结为:“特别是考虑到Java框架的发展方向,遵循更广泛的接口命名约定值得吗?”
我不喜欢在接口上使用前缀:
-
前缀会影响可读性
-
在客户机中使用接口是标准的最佳编程方式,因此接口名称应尽可能简短和令人愉快。实现类应更加丑陋,以阻止使用它们
-
当从抽象类更改为接口时,带有前缀I的编码约定意味着重命名所有出现的类——不好