当我们在类名中使用“ iOS”作为单词时,是否应该大写“ i”?

时间:2019-02-01 05:12:33

标签: java naming-conventions camelcasing

某些品牌实际上并不喜欢利用首字母大写,而更改可能会使外观看起来完全不同,尤其是对于“ iOS”而言。还有更多类似“ mCore”,“ macOS”等等。关于班级名称,我应该将首字母大写还是保留原样?

例如“ iOSCompatProxy”和“ IOSCompatProxy

3 个答案:

答案 0 :(得分:2)

对于这种类型的类名,没有普遍遵循的约定。甚至常规的大写缩写(如“ XML”)也会导致不一致。查看the official JDK class list,发现与externalNativeBuild { cmake { ... version "3.10.2" arguments "-GAndroid Gradle - Ninja" } } 一样多的名为XMLSomething的类。

Google在Google Java Style Guide中处理此主题,他们提供了一种将文本转换为类名的方案:

  

有时候,有多种合理的方法可以将英语短语转换为驼峰式大小写,例如,当出现首字母缩写词或诸如“ IPv6”或“ iOS”之类的异常结构时。为了提高可预测性,Google样式指定了以下(几乎)确定性方案。

     

从名字的散文形式开始:

     
      
  1. 将短语转换为纯ASCII并删除所有撇号。例如,“穆勒算法”可能会变成“穆勒算法”。

  2.   
  3. 将此结果分为单词,空格和其他标点符号(通常为连字符)。

         
        
    • 推荐:如果任何单词在常规用法中已经具有常规的驼峰式外观,请将其拆分为各个组成部分(例如,“ AdWords”变成“ ad words”)。请注意,在驼峰情况下本身并不是真正的单词“ iOS”;它违反了 any 约定,因此该建议不适用。
    •   
  4.   
  5. 现在小写的一切(包括首字母缩写词),然后仅大写以下字符的第一个字符:

         
        
    • ...每个单词,产生驼峰大写字母,或
    •   
    • ...除了第一个单词以外的每个单词,都会产生小骆驼字母
    •   
  6.   
  7. 最后,将所有单词合并为一个标识符。

  8.   

他们的方案将XmlSomething作为类名,将IosCompatProxy作为变量名。他们故意不理会原始大写字母,而是采用一种更加基于规则的骆驼案形式。

也许这不是最漂亮的表格,但是如果您要遵循的规则,并且没有适用的工作规则,那么Google的风格指南就是尽力而为,因为它特别提到了“ iOS”。我倾向于高度重视他们的约定,因为他们维护着使用它们的Java数量巨大(截至2018年[1],有3亿行)。

答案 1 :(得分:1)

通常来说,在Java类名称中,总是以大写字母开头的第一个字母和所有后续字母,例如ThisIsAClass。这是为了将它们与变量名和方法名区分开。因此,根据我对Oracle样式指南的理解,我相信IOSCompatProxy将是正确的类名,Oracle样式指南是一般的Java样式指南,如此处所示(我不相信任何重大的样式更改,因为最后更新):

  

类名应为名词,每个内部单词的首字母应大写。尝试使您的类名称保持简单和描述性。使用整个单词,避免使用首字母缩写词和缩写词(除非缩写词比长格式(如URL或HTML)使用得更广泛)。

此外,由于iOS是一个首字母缩写词,比“ Internet and Operating System”(互联网和操作系统)使用得更广泛,因此我要说整个首字母缩写词要大写。如果您有不同的解释,例如与@Boann所写内容相符的解释,请使用该解释。

但是,除非您为Google工作,否则我不鼓励您遵循Google的风格指南(假设Google将其风格指南基于Oracle,则一般的语法遵循可能是可以的),只是因为它们的风格可能与您所在的公司不同未来。相反,我建议遵循Oracle样式指南,该指南可在此处找到:https://www.oracle.com/technetwork/java/codeconvtoc-136057.html

答案 2 :(得分:-1)

我个人将其命名为iOSCompatProxy。我认为对于这个世界上的每条规则,都有例外。 :)