ヤサイブログ

I'll keep hacking on fun. ~ 学びよ、加速しろ ~

プログラミング言語の命名ルールとgolangにおける傾向について

プログラマー命名ルールに敏感です!敏感プログラマー
命名ルールに則ってない記述を見つけるともにゅっ(´・ω・`)とします。

それも、もちろん経緯があります。
同じプログラミング言語で記述されたファイルにおいて、
下記のような名前があったらどう思いますでしょうか。

CreateFutureIssue.java
delete_future_issue.java

・・・どちらかに揃えたいと思いますよね!まずはそこからになります。

命名には様々なルールがありますので、下記に紹介したあと、
golangにおける傾向を見ていきたいと思います。

キャメルケース(camelCase)

ラクダの背中のように見えることから Camel case と呼ばれます。

一番最初の単語を大文字にしたケースをアッパーキャメルケースまたは、
パスカルケースと呼ぶようです。

Javaにおいてインスタンス変数にキャメルケース、
クラスファイル名パスカルケースが使われているのかなという印象です!

Javaにおけるキャメルケースによるインスタンス変数の定義例

f:id:yasay:20190128203354p:plain

Javaにおけるパスカルケースによるクラスファイル名の定義例

f:id:yasay:20190128203602p:plain

スネークケース(snake_case)

地をはう蛇のように見えることから Snake case と呼ばれます。

Javaにおいてもfinal修飾子を加えたグローバルスコープ変数などに利用されます。
しかしながら、Javaのグローバルスコープ変数は大文字で記述する例が多く、
この場合はスクリーミングスネークケースとも呼ばれるようです。

Javaにおけるスネークケースによる変数の定義例

f:id:yasay:20190128204532p:plain

ケバブケース(kebab-case)

串が刺さったケバブのように見えることから Kebab case と呼びます。

GitHubリポジトリ名に使われる習慣がありますね。
文字の入力方法にしても「Shiftキー」を使う必要がないということで、
もっとも楽な入力方法ではあると思います。

マークダウンファイルのファイル名や、AWSリソースへの命名など、
個人的にはケバブケースの利用頻度が高まっています。
頭を大文字にしたケバブケースをトレインケースとも呼ぶようです。

マークダウンにおけるケバブケースによるファイル名の定義例

f:id:yasay:20190128204114p:plain

golangにおける命名ルールの傾向

golangの有名なOSSとして、「Docker」がありますね。
個人的に注目している「Vuls」も含めて、ソースコードを覗いてみました!
github.com
github.com
github.com
github.com

可視性

golangはメンバーの可視性(Public/Private)を
先頭大文字で判定する言語仕様がありますので、
変数やメソッド名の命名規則は基本的にキャメルケースまたは
パスカルケースで統一
されていますね。

golangにおけるキャメル・パスカルケースによる変数の定義例

f:id:yasay:20190128212626p:plain

ただし、golangのファイル名については
スネークケースとする習慣があるようです。

golangにおけるスネークケースによるファイル名の定義例

f:id:yasay:20190128212733p:plain

所感

プログラマー界隈では命名ルールは知ってて当たり前的なノリになるので、
新人に対して、変数やクラス名などの命名ルール規則まで詳しくフォローしてくれる人は
稀なのかなと思っています。

「ここ、キャメルケースになっているのでスネークケースに直して~」的なレビューが
飛んできた時、ベテランプログラマーなら問題ないでしょうが、
新人だと「スネークケースってなんだ?」ってなってしまうでしょうね。

各言語を利用する前に、命名ルールを把握しておけば
新規プロジェクトにスムーズに取り組めると思います!

参考サイト

tbpgr.hatenablog.com

以上です!