キャメルケースで省略語(頭字語)を使うときの命名規約

※本記事はQiitaに投稿していた記事のexportです(元投稿日: 2018/7/16)

KotlinでAndroidを書いているときに、命名に迷って調べたメモです。 キャメルケースにおいてHTTP, XML, SMS といった大文字の省略語を扱う場合どう書くのが良いのか、参考のために各コーディングガイドラインを読んでみました。

AOSP Java Code Style for Contributors

Android Open Source Projectにcontributeする際の規約です。

https://source.android.com/setup/contribute/code-style#treat-acronyms-as-words

Treat acronyms and abbreviations as words in naming variables, methods, and classes to make names more readable:

Good Bad
XmlHttpRequest XMLHTTPRequest
getCustomerId getCustomerID
class Html class HTML
String url String URL
long id long ID

クラス名はupper camel case, メソッド名や変数名はlower camel caseで普通の単語と同様に扱っています。 JDKAndroidのcodeでここのルールは矛盾しているけども、致し方なしとしています。

Google Java Style Guide

https://google.github.io/styleguide/javaguide.html#s5.3-camel-case

こちらはかなり詳細に定義してありました。"Ipv6OnIos"は全然見慣れなくてすごいですね。

Prose form Correct Incorrect
XML HTTP request XmlHttpRequest XMLHTTPRequest
new customer ID newCustomerId newCustomerID
inner stopwatch innerStopwatch innerStopWatch
supports IPv6 on iOS? supportsIpv6OnIos supportsIPv6OnIOS
YouTube importer YouTubeImporter

Kotlin.org Coding Conventions

http://kotlinlang.org/docs/reference/coding-conventions.html#choosing-good-names

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).

2文字までなら大文字で、それより長い場合は先頭だけ大文字です。

Android以外の場合

Go Code Review Comments

https://github.com/golang/go/wiki/CodeReviewComments#initialisms

Words in names that are initialisms or acronyms (e.g. "URL" or "NATO") have a consistent case. For example, "URL" should appear as "URL" or "url" (as in "urlPony", or "URLPony"), never as "Url". As an example: ServeHTTP not ServeHttp. For identifiers with multiple initialized "words", use for example "xmlHTTPRequest" or "XMLHTTPRequest".

This rule also applies to "ID" when it is short for "identifier", so write "appID" instead of "appId".

大文字か小文字で統一します。今回サーバサイドがGoでAPIはこのルールに従っていました。

Swift Style Guide

https://github.com/eure/swift-style-guide#variables-and-functions-should-be-in-lowercamelcase-including-statics-and-constants-an-exception-is-acronyms-which-should-be-uppercase

Variables and functions should be in lowerCamelCase, including statics and constants. An exception is acronyms, which should be UPPERCASE.

Rationale: Adopt Apple's naming rules for uniformity. As for acronyms, the readability makes keeping them upper-case worth it.

公式が見当たらずエウレカさんのガイドラインです。upper caseとのこと。

結論

今回使いたかったのは"SMS"と3文字だったのもあり、JavaやKotlinの例を参考に"Sms..."といった書き方にしました。 この件以外にもコーディング規約はあった方が良いので、下記辺りを参考にしてみるつもりです。

言語ごとに結構ルールが違って、調べてみたら面白かったです。