以下Java类的正确名称是什么: dvd播放器还是DVDPlayer ?
DVDPlayer是标准的,但DVDPlayer并不少见。
您经常会看到getId。这可能是因为认为ID是“Identity”的缩写。其实是身份证件的首字母。
HttpURLConnection通常是混合约定的一个例子。然而,“http”作为URL中的协议名应该是小写的(尽管大写通常是可以接受的)。
我在野外看到过这两款产品,Sun似乎更喜欢DVDPlayer风格。不过,我更喜欢DvdPlayer,因为这样即使有多个连续的首字母缩写,也可以清楚地看到单词的边界,就像在HTTPURLConnection中一样。
来自sun java文档:
类名应该是名词,在混合大小写的情况下,每个内部单词的第一个字母必须大写。尽量保持类名的简单和描述性。使用完整的单词-避免首字母缩写和缩写(除非缩写比长形式使用得更广泛,如URL或HTML)。
没有“正确”的答案。只是一组实践和约定,可以更好地使用您的其他工具。
因此我更喜欢DvdPlayer。它更有用,因为在Eclipse中,您可以按Ctrl+Shift+T并按每个单词的首字母选择类。
我喜欢以以下方式定义类的单个实例:
Catalogue catalogue;
Person person;
因此,如果我使用DVDPlayer,我该怎么称呼它的实例呢?dVDPlayer吗?因此,我选择DvdPlayer类名,这样你就可以像DvdPlayer这样命名实例。
一些来自JavaSE类、apache commons和spring的例子:
HttpURLConnection HTTPAddress UrlPathHelper AopProxy ISBNValidator
所以,这并不重要。
这里没有“正确”,只有偏好。
Sun在命名包含“URL”和“HTML”的类的方式上是一致的,但我看到HTTP在javadocs中使用全大写和驼峰大小写。
就我个人而言,我更喜欢DvdPlayer。
正如其他人所指出的,这是不同项目的风格问题。谷歌项目,如Guava和GWT更喜欢DvdPlayer风格。
https://google.github.io/styleguide/javaguide.html#s5.3-camel-case
因为看起来答案是在Java中没有单一的标准,我想指出的是。net框架设计指南确实规定了这一点。
现在,在抨击我跑题之前,请记住Java和. net框架的类命名指南是非常相似的,这使得. net指南作为有说服力的参考非常有用。
一般规则
这两份指南都建议只在缩略语被广泛了解和理解的情况下使用缩略语。DVD或XML就是很好的例子,虽然您可以立即识别它们,但要识别扩展版本则需要稍长的时间。
缩写
. net框架指南建议不要使用缩写(与首字母缩略词相对),除了两个常见的缩写ID和OK可以用于标识符。在使用缩写时,除了camelCase标识符(与PascalCase标识符相反)的第一个单词外,总是使用混合大小写Id。
在Java中,这种约定只在某些时候被遵循。看看JCL中getID和getID的拼写是如何混合在一起的。(向下滚动页面)。然而,在Java 8版本中,getId被越来越多地使用,这暗示了PascalCase约定现在是首选。如果可能的话,最好完全避免使用缩写。
短的缩写
. net框架指南说,像IO这样两个首字母缩写的字母应该有相同的大小写。因此,对于PascalCase标识符(如类名),您将获得DBRate,而对于camelCase标识符(如局部变量),您可能会获得ioChannel。
这似乎也是Java中流行的约定。
长缩写
. net框架指南建议三个字母或更长的首字母缩写词使用混合大小写作为PascalCase和camelCase标识符,除了camelCase标识符的第一个单词。因此,对于类名,可以使用XmlDocument,而局部变量可以命名为httpRequest。
在Java中并不总是遵循这个约定。四个字母的首字母缩略词似乎通常使用混合大小写,但即使是JCL对三个字母的首字母缩略词也不一致。它们中的大多数似乎都是大写的,如URL、XML、SQL和DOM,但也有一些例外,如Jar。
结论
对于Java:
对于4个以上字母的首字母缩写,使用混合大小写。标准库就是这样做的,这很有意义。
对于3个字母的首字母缩写,你可以像JCL一样使用全部大写,或者像. net Framework一样使用混合大小写。无论哪种方式,保持一致。
对于2个字母的首字母缩写,全部使用大写字母。
对于2个字母的缩写,Java并没有真正的标准,但我建议使用混合大小写,除非与其他名称保持一致会使所有大写看起来更好。
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap