在JAVA界面前放置一个大写的"我"

jax*_*jax 12 java coding-style naming-conventions

许多年前,当我在大学时,他们说要在接口前放置一个大写i(I).这仍然是一个约定,因为我看到许多接口不遵循这一点.

Law*_*Dol 19

这通常不是用Java完成的 - 它是C#/ .NET的东西.

就个人而言,我不喜欢它,因为我认为它泄漏了不应泄露的信息.对于是通过接口处理对象还是直接通过类API处理代码,代码应该是不可知的.

  • 它在一些Java库中很常见(例如,Eclipse的SDK) (7认同)
  • 有趣的是,微软几乎为所有东西都删除了匈牙利符号,但仍然觉得他们需要通过查看它是一个界面的名称来告诉你. (6认同)
  • @zneak:当返回给调用者的是接口类而不是实现类时,它会泄漏.我真的不认为getInputStream()和getOutputStream()的调用者应该在InputStream和OutputStream被正确定义为接口的世界中看到IInputStream和IOutputStream. (5认同)
  • 必须“泄漏”这些信息,以使人们考虑扩展类型还是实现类型,您不认为吗? (3认同)
  • @Uri不,这不常见.只有一些例外,比如Eclipse. (2认同)

akf*_*akf 13

不,这不是惯例.至少它不在JDK中.也就是说,如果你的商店将此作为约定,即使它可能不在外面练习,我建议你效仿.在公约方面,保持团队内部的一致性更为重要.


Pas*_*ent 5

在接口上使用"I"前缀是COM创建的(.NET刚刚继承了此约定)并且不是 Java中的标准.查看Sun开发的任何JDK或其他代码,您将看不到I前缀.而且不仅是Sun,大多数Java项目都不使用I前缀.I前缀不仅仅是Java标准,而是Java世界某些角落采用的偏差.

  • LOL在downvote.小心解释原因? (3认同)