キャメルケース(camelcase)において、IDやURL、HTTPといった略語(頭字語:acronym)はどのように扱うべきでしょうか。
プラットフォームのコーディングガイドラインによって決められているものがあるのでまとめました。
他にあれば追記しますのでコメントください。(決まっていないものもまとまっていると、探す手間が省けるかもしれません。)
個人的にはどのスタイルでも一貫性があればよいと思うのですが、マルチプラットフォームなAPIを考えるときにどうするか迷いますよね。
Cocoa (Objective-C)
- well-knownなacronymについては全部大文字とある
- ガイドラインには「先頭では、、、」と書いてあるけど、先頭でなくても大文字になっている
- 例
- URLWithString:relativeToURL:
Coding Guidelines for Cocoa
well-known acronymは例はこちら
Java(Google Java Style Guide)
Google社内のJavaスタイルガイドでは非常に丁寧に変換手順が書いてあります。
- 他の単語と同じように扱う=先頭の単語は小文字または大文字、以降の単語の先頭は大文字
正 | 誤 |
---|---|
XmlHttpRequest | XMLHTTPRequest |
newCustomerId | newCustomerID |
supportsIpv6OnIos | supportsIPv6OnIOS |
https://google.github.io/styleguide/javaguide.html#s5.3-camel-case
https://kazurof.github.io/GoogleJavaStyle-ja/#s5-3-camel-case
Java(Android)
- 他の単語と同じように扱う=先頭の単語は小文字または大文字、以降の単語の先頭は大文字
- 例
- class XmlHttpRequest
- getCustomerId
- すでにJDKとAndroidのコードで一貫性は無いけど、我慢して従ってほしいとのこと
http://www.textdrop.net/android/code-style-ja.html#acronyms
http://source.android.com/source/code-style.html#treat-acronyms-as-words
.NET
- 2文字までは全大文字(例 ID, DB)
- 3文字以上は先頭のみ大文字(例 Xml, Http)
Swift
Acronyms and initialisms that commonly appear as all upper case in
American English should be uniformly up- or down-cased according to
case conventions:var utf8Bytes: [UTF8.CodeUnit]>> var isRepresentableAsASCII = true
var userSMTPServer: SecureSMTPServerOther acronyms should be treated as ordinary words:
var radarDetector: RadarScanner
var enjoysScubaDiving = true
- すべて大文字またはすべて小文字にする。
- CamelCase/camelCaseのルールに従う。
- ガイドラインの例がわかりやすい。
Kotlin
When using an acronym as part of a declaration name, capitalize
it if it consists of two letters (IOStream); capitalize only the
first letter if it is longer (XmlFormatter, HttpInputStream).
基本的にはJavaに従うようですが、
acronymに関しては.NETのように2文字とそれ以上で分ける派のようですね。
Rust
https://sinkuu.github.io/api-guidelines/naming.html
https://github.com/rust-lang/rfcs/blob/master/text/0430-finalizing-naming-conventions.md
In UpperCamelCase, acronyms count as one word: use Uuid rather than
UUID. In snake_case, acronyms are lower-cased: is_xid_start.
他の単語と同じように扱えとのこと。Javaと同じですね。