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

时间:2010-02-23 03:37:25

标签: java coding-style naming-conventions

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

11 个答案:

答案 0 :(得分:19)

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

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

答案 1 :(得分:12)

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

答案 2 :(得分:5)

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

答案 3 :(得分:4)

它在Eclipse Framework中使用了很多。它取决于各个项目样式,但它不是标准惯例。但是,在某些情况下,它肯定可以帮助编写代码维护和搜索。

答案 4 :(得分:3)

我想提一下,在另一种方式,一个真正的界面实现,你可能会发现后缀 Impl 或一整套名称 impl example)。

但这无论如何都不是标准。

答案 5 :(得分:2)

在Java中,惯例是尝试以“able”结束你的接口。可序列化,可克隆等。在.NET中,它们以“我”开头。

我坚持使用您的语言标准的方法(即尝试“能够”扩展)。我不同意软件猴子它“泄露不应泄露的信息”。有一个名字可以表明它是什么类型的东西,恕我直言。

答案 6 :(得分:1)

这是一个熟悉的编程约定,但它的流行程度取决于API。 例如,它通常不是Java标准库,其中集合之类的东西是接口,但是被命名为它们的数学概念。另一方面,Eclipse等一些重要的API会持续使用它。

我听到一个反对使用前缀的论点是,一个基本上是将语言问题(即接口和类的双重断言)放入命名方案中。另一个是“公共API中的所有内容都应该是一个接口,而不是一个类”。由于许多实现接口的类被命名为“XImpl”,因此可以说它可能是多余的。但是,如果类型仅仅是标记,则使用前缀可能有意义。

答案 7 :(得分:1)

我不建议使用它。你永远不知道你的界面是否成为一天抽象类。然后你必须重命名每一个用法,或者只是坚持使用带有前缀的丑陋的命名抽象类。

(来源:Robert C. Martin - 敏捷软件开发:原则,模式和实践)

答案 8 :(得分:0)

这种编码风格被称为 Hungarian Notation ,因为它是由Charles Simonyi在微软发明的,恰好是匈牙利人。匈牙利表示法的目的是将无法在类型系统内表达的语义信息编码为标识符名称。

然而,Java的类型系统完全能够区分接口(只是尝试extend一个类),抽象类(只是尝试实例化一个)和类(只是尝试implement一,)大多数IDE都是如此。因此,以这种方式使用匈牙利表示法是完全没用的。

据我所知,它从来就不是一个惯例,现在肯定不是。至少在Java社区中。 (有一些Java 项目使用它。它有时也用在C ++中,但它有意义,因为在C ++中没有接口这样的东西,所以你必须有一个标记它们的方法。它也在CLI上使用,因为它与Java中的原因完全无关。)

答案 9 :(得分:-1)

这当然是.NET约定,而Microsoft在.NET基类库中使用自己的接口来实现这一点。当我使用Java时,这是Java惯例,并且无法想象它已经发生了变化,尽管我还没有使用Java。

作为C ++的一小部分,我们也常常用'I'作为前缀,实际上我们总是习惯用'C'作为前缀。我们没有把这个'C'约定带到.NET。

答案 10 :(得分:-9)

我错了,不喜欢这种事。我使用了一个创建它的Java产品并且令人抓狂。

最终这种事情可以追溯到20世纪50年代的FORTRAN-I,当时我,J,K,......我忘了哪里是自动整数,其余的字母表是实数(浮点数)。