ケーススタイルについて知ろう (Camel Case? Pascal Case? Kebab Case?)

ケーススタイルについて知ろう (Camel Case? Pascal Case? Kebab Case?)

2022年4月14日

今日は会社でも投稿したことのある記事の一つです。

コーディングを新しく始める方々にガイドしたいことがあるので、そういう部分だけを集めて今後は Code Guide というタグをつけて投稿しようと思います!

コーディングスタイル

一人で開発するのであれば何の問題もありませんね。最近ではほとんどの言語がUTF-8という文字エンコーディングをサポートしているので、コードに日本語を使うこともできます。

特に 変数名関数名クラス名 など開発者が自由に名付けられるものは、理論的には中国語であろうと日本語であろうと問題ありません。

それではなぜほとんどのコーディングは英語で書かれるのでしょう?

少し話が逸れますが、英語でのみ動作するモジュールや関数があります。

特に C++ のような古い言語の場合、日本語をサポートするには日本語を英語やOSが理解できる文字に変換するパーシングモジュールが別途必要なこともあります。

実はそれ以上に重要なのは、協働する開発者間でコーディングスタイルを合わせるためです。

ある人は日本語、ある人は英語、またある人は中国語で変数名を定義していて、同じ役割をしているのであれば、新しくチームメンバーになった開発者がそのコードを見たときに理解するのが非常に難解なコードになるでしょう。

そのため、開発者間ではコードをどのように名付け、どのように定義するかについての規則が定められており、これをコーディングガイドやコンベンションと呼んでいます。

前置きが長くなりましたね。本題に入りましょうか?

ケーススタイル

ケーススタイルは一種のネーミング規則と考えればよいでしょう。

変数や関数名、クラス名を付けるときに、その規則に従って付けるのです。特にスペースに大きく関係しています。

多くの言語がスペースを文法の要素に含んでいるので、そのスペースを置き換える文字をどのように設定するかという悩みが含まれていると考えられます。

▼ ケーススタイルを面白く表現した画像

image

ケーススタイルは非常に多いですが、よく使われるケーススタイルは大きく4つの種類があります。

camelCase # キャメルケース
PascalCase # パスカルケース
snake_case # スネークケース
kebab-case # ケバブケース

皆さん気付いていると思いますが、そうです、今書いたコードがケーススタイルの代表的な特徴です。

キャメルケース(Camel Case)

キャメルケースは片方のコブのあるラクダの形から取ったケースです。スペースを入れるべきところでスペースの代わりに後に続く文字を大文字に書くのです。Lower camel case、Upper camel caseと区別する場合もありますが、一般的にUpper camel caseはPascal caseと呼ばれます。

▼ キャメルケースの例

todayDate = "2022-04-14";

上の方法のように today date という文字をスペースの代わりに todayDate と表記できます。

GoogleのJavaコードスタイルガイドを見ると、この方法は Java とJavaベースで作られた言語である Kotlin でメソッド名、変数名などの命名に使用されることがわかります。

(参考リンク: https://google.github.io/styleguide/javaguide.html#s5-naming)

パスカルケース(Pascal Case)

パスカルケースはUpper camel caseとも呼ばれます。パスカル言語の場合、最初の文字はすべて大文字で表記したため、その名前に由来します。

▼ パスカルケースの例

TodayDate = "2022-04-14"

この表記法は Python のクラス名、 C では構造体や C++ のクラス名を命名する規則、 Java のクラス、インターフェースなどの命名規則で広く利用されています。

さらにPythonのコードガイド PEP8 を調べると、次のリンクでもPythonのクラスでこのケースを使用していることがわかります。

このページではパスカルケースをキャメルケースと呼んでいますが、これは先に説明したUpper camel caseなので混同しないでください。 https://realpython.com/python-pep8/#naming-styles

スネークケース (Snake Case)

コードがまるでヘビの形をしているように見えるため、この表記法の名前はスネークケース(Snake Case)です。

変数や関数名のスペースをアンダースコア _ で区切る形式を指します。

▼ スネークケースの例

today_date = "2022-04-14"

これはPythonの命名規約 PEP8 でモジュール名、関数名、メソッド名、変数名などで使用するように推奨される表記方法です。

(参考リンク: https://google.github.io/styleguide/javaguide.html#s5-naming)

また、この方式に反して変数名を宣言した場合、 Python の代表的なIDE、PyCharmでは PEP8 に反するため、新しく変数名を付け直さないかと下線を引いて警告してくれます。

▼ 誤った変数名の例

HelloMyMrYesterday = "2021-01-10"

▼ Pycharmでの警告

image

+ 豆知識

PEP8 では命名だけでなく、インデント、空白にも明確な規約があり、多くの規約は PyCharm IDE の自動コード整頓ショートカットキー (Ctrl + Alt + L) を使って一度に整頓できます。

▼ 直感的に理解しやすいように、以下のコードのようにわざとコード規約を無視してみます。

def func_1():
    return 1
def func_2():
    return 2

パイチャームでは次のように黄色い警告下線とともにコードを直すことを勧めます。親切に PEP8 と先に付いていますね!

image

image

  • その後 Ctrl + Alt + L を押すと、
def func_1():
    return 1
    
def func_2():
    return 2

このように関数ごとに2回のインデントを入れて警告が消えるのが確認できます。

ケバブケース (Kebab Case)

キャメルケース、スネークケース、ケバブケースを見ると開発者が非常に直感的にコードを見ていることがわかります。

today-date = "2022-04-14"

ご覧のように文字がまるで串に刺さったようにスペースをハイフン(-)で置き換えた表記方法をケバブケースと言います。

通常、 CSS のようなパブリッシング言語でよく使用されます。これに関連する詳細はネーミングコンベンション(Naming Convention) BEM で確認できます。 https://en.bem.info/methodology/naming-convention/

終わりに

  • 今日は様々なコーディングスタイル規約とコンベンションに密接に関連する命名規約、ケーススタイルについて学びました!
  • コミットコンベンションのように Git commit 時の規約についても取り扱いたいですね。
  • 質問がある方や間違いがあればコメントをください!