プログラマーは命名ルールに敏感です!敏感プログラマー!
命名ルールに則ってない記述を見つけるともにゅっ(´・ω・`)とします。
それも、もちろん経緯があります。
同じプログラミング言語で記述されたファイルにおいて、
下記のような名前があったらどう思いますでしょうか。
CreateFutureIssue.java delete_future_issue.java
・・・どちらかに揃えたいと思いますよね!まずはそこからになります。
命名には様々なルールがありますので、下記に紹介したあと、
golangにおける傾向を見ていきたいと思います。
キャメルケース(camelCase)
ラクダの背中のように見えることから Camel case と呼ばれます。
一番最初の単語を大文字にしたケースをアッパーキャメルケースまたは、
パスカルケースと呼ぶようです。
Javaにおいてインスタンス変数にキャメルケース、
クラスファイル名にパスカルケースが使われているのかなという印象です!
Javaにおけるキャメルケースによるインスタンス変数の定義例
Javaにおけるパスカルケースによるクラスファイル名の定義例
スネークケース(snake_case)
地をはう蛇のように見えることから Snake case と呼ばれます。
Javaにおいてもfinal修飾子を加えたグローバルスコープ変数などに利用されます。
しかしながら、Javaのグローバルスコープ変数は大文字で記述する例が多く、
この場合はスクリーミングスネークケースとも呼ばれるようです。
Javaにおけるスネークケースによる変数の定義例
ケバブケース(kebab-case)
串が刺さったケバブのように見えることから Kebab case と呼びます。
GitHubのリポジトリ名に使われる習慣がありますね。
文字の入力方法にしても「Shiftキー」を使う必要がないということで、
もっとも楽な入力方法ではあると思います。
マークダウンファイルのファイル名や、AWSリソースへの命名など、
個人的にはケバブケースの利用頻度が高まっています。
頭を大文字にしたケバブケースをトレインケースとも呼ぶようです。
マークダウンにおけるケバブケースによるファイル名の定義例
golangにおける命名ルールの傾向
golangの有名なOSSとして、「Docker」がありますね。
個人的に注目している「Vuls」も含めて、ソースコードを覗いてみました!
github.com
github.com
github.com
github.com
可視性
golangはメンバーの可視性(Public/Private)を
先頭大文字で判定する言語仕様がありますので、
変数やメソッド名の命名規則は基本的にキャメルケースまたは
パスカルケースで統一されていますね。
golangにおけるキャメル・パスカルケースによる変数の定義例
ただし、golangのファイル名については
スネークケースとする習慣があるようです。
golangにおけるスネークケースによるファイル名の定義例
所感
プログラマー界隈では命名ルールは知ってて当たり前的なノリになるので、
新人に対して、変数やクラス名などの命名ルール規則まで詳しくフォローしてくれる人は
稀なのかなと思っています。
「ここ、キャメルケースになっているのでスネークケースに直して~」的なレビューが
飛んできた時、ベテランプログラマーなら問題ないでしょうが、
新人だと「スネークケースってなんだ?」ってなってしまうでしょうね。
各言語を利用する前に、命名ルールを把握しておけば
新規プロジェクトにスムーズに取り組めると思います!