XMLParser vs XmlParser
どちらが正解?表記が揺れるケースと対策
キャメルケースの表記で、よく揺れるケースとその対策についてまとめてみました。プロジェクト内で表記を統一したい場合などに参考にしてみてください。No.3以降は、単語の区切りについてなので、snake_caseにも当てはまりますよ。
1. XMLParser – XmlParser
これはよく揺れますね。XMLのようにそれぞれの頭文字 (Extensible Markup Language) を並べて作られた単語を頭字語と言います。頭字語は、それが頭字語だと言う事をわかりやすくするために、英文のルールではすべてを大文字にします。このルールとキャメルケースの表記法とが衝突しているので、人それぞれで書き方がバラツキます。
Rule
ルールを作る場合は、英文ルールに従い頭字語はすべて大文字にするか、キャメルケースに従うか・どちらか一方にしなければならないのですが、単語によってしっくりくる書き方が違ったりしますよね。気になる方は、Mirosoftのネーミング標準を参考にするといいと思います。このガイドラインでは、頭字語について以下の様に決めています。
- 2文字まではすべて大文字、3文字以上は先頭だけ大文字
- camelCaseの最初の単語はすべて小文字
IoExceptionの気持ち悪さも回避できているのがポイントです。とてもシンプルなので、プロジェクトルールとして簡単に運用できそうな気がします。
class IOException{} // 2文字はすべて大文字 class XmlParser{} // 3文字以上はCapitalCase var ioException; // Camelcaseの最初の単語は常に小文字 function getId(); // Idは頭文字語ではないので大文字にはならない
2. getDIR – getDir
これもなぜか少なからず見るパターンです。directoryの省略形dirは、頭字語ではなく省略形(abbreviation) に分類されます。省略形には頭字語のように大文字にするルールはないので、getDir が正解です。
function getDIR(); // × function getDir(); // ○
Rule
日本人には、なぜか3文字の単語を反射的に大文字にするという変な癖があるようで、頭字語なのか省略形なのかをちゃんと辞書で調べて使い分けましょう。ちなみに、ウェブはWorld Wide Webの略なので、WEBではなくWebが正解です。
3. MultiThread – Multithread
次は合成語のケースです。マルチスレッドは、一般的にはmultithreadかな思いますが、人によってはmulti-threadとも書きます。どちらが正解というわけでなく、合成語になる過程によるものなのでどちらも正解です。
file name / filename white space / whitespace view point / viewpoint drop down / dropdown style sheet / stylesheet multithread / multi thread log in / login
Rule
ルールとしては、シンプルに単語は必ず区切るというルールにする方法もありますが、あまりお薦めしません。updateやprepaidみたいに明らかに1つの単語であるものが、upDate()のようになってしまうからです。おすすめは、何か1つ辞書を決めてそれに合わせる方法かなと思います。
4. Youtube – YouTube
これも合成語のようですが、ちょっと違います。Youtubeのようなサイト名は固有名詞です。固有名詞の場合、本家がどのように綴っているかで決めればいいでしょう。
Rule
Wikipediaの見出し語は、正式な表記を採用しているようなので、ルール化したい場合はWikipediaを参考にしてみるといいと思います。
5. LogIn – Login
同様に合成語のケースですが、句動詞(動詞+副詞)の場合、合成語になりにくい特性があります。そのため名詞と動詞で書き方が違うという事が起きます。loginの場合は、動詞として使う場合は、log in、名詞として使う場合は、log-inあるいはloginが正解になります。
[verb] [noun] fade in / fadein or fade-in log in / login or log-in set up / setup rollback / rollback - これは同じ
Rule
rollbackのように単語によっては完全に合成しているものもあるので、やっぱり何か1つ辞書を決めてそれに従うのがいいかなと思います。
まとめ
手前味噌ですが、密かにcodicをバージョンアップ中です。新しいcodicでは、こういったルールをプロジェクト内で効率的に共有できるような感じにしたいと思っています。お楽しみに v