以下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并没有真正的标准,但我建议使用混合大小写,除非与其他名称保持一致会使所有大写看起来更好。
推荐文章
- JDK 8中的PermGen消除
- 如何将CharSequence转换为字符串?
- 在Java中初始化一个long
- Java的数组indexOf在哪里?
- 同一个键下的多个值
- Java“虚拟机”vs. Python“解释器”的说法?
- 获取操作系统级别的系统信息
- 如何通过SFTP从服务器检索文件?
- Intellij错误地表示没有为自动连接存储库找到类型的bean
- Android构建脚本库:jcenter VS mavencentral
- 为什么我应该使用Deque而不是Stack?
- 为什么我的春季启动应用程序总是在启动后立即关闭?
- 为什么ArrayDeque比LinkedList好
- 如何使用旧版本的Hibernate(~2009)来计算行数?
- Java泛型什么时候需要<?扩展T>而不是<T>,切换有什么缺点吗?