Nutmeg advent calendar 2023

実務を通じて実感した命名規則

実務を通じて実感した命名規則

はじめに

普段プログラムを書く際に,命名規則は意識していますか?

個人開発の時には,あまり意識なくても大丈夫なものですが,チーム開発において命名規則を決めておくことはとても重要です. レビューなどでプログラムを読んでもらう際に,命名規則が適当だとプログラムを理解するのに時間がかかってしまい,作業効率が落ちてしまいます.

自分は実務訓練の際に,この命名規則が少し適当だったため,レビューにかなり時間がかかりました. そのため,本ページでは,開発における命名規則について触れていこうと思います.

命名規則

さっそく命名規則について説明していきます.
多くのプログラムで使用されている命名規則は以下の4つです.

  • キャメルケース
  • パスカルケース
  • スネークケース
  • ケバブケース

キャメルケース

キャメルケースとはcamelCaseみたいな感じに複数の単語を一つの綴りにして,接続する2つ目以降の単語の最初の文字を大文字で書くスタイルです. camelとはラクダを意味しますが,単語の先頭が大文字になってラクダのコブのように見えることからキャメルケースと呼ばれています. キャメルケースは,プログラムにおいて,関数名や変数名に使われます.

パスカルケース

パスカルケースとはPascalCaseのように各単語の先頭を大文字で書くスタイルです.プログラミング言語のパスカルで使用されていたことが由来みたいです.パスカルケースはクラス名やモジュール名など,関数よりのさらに大きいくくりの場所の命名に使われています.

スネークケース

スネークケースとはsnake_caseのように各単語を_(アンダースコア)でつなげて書くスタイルです.スネークケースはキャメルケースと同様に関数名や変数名に使われています. なお,キャメルケースとスネークケースの使い分けは特に厳しく決まっているわけではないため,プロダクトごとに使い分けましょう.

ケバブケース

ケバブケースとはkebab-caseのように各単語を-(ハイフン)でつなげて書くスタイルです.ケバブケースは-を使っている関係上,ファイル名に使われます.

名前の付け方

前の章では,命名規則について説明しました.しかし,命名規則を知っただけでは,読みやすいコードをかけるようにはなりません. 命名規則を知ったうえで,下記の項目での名前の付け方を気を付けることでさらに読みやすくなります.

  • クラス名
  • 関数名
  • 変数名

クラス名

クラス名やモジュール名を決めるにあたって,意識することは「クラス名は名詞にする」ということです. 例えば「ユーザを登録するクラス」を作るとしましょう.「ユーザを登録するクラス」を安直に翻訳してRegisterUsersClassみたいな感じに命名してはいけません.これだとUsersClassを登録するみたいな意味になってしまいます. そのため,一度「ユーザを登録する」という動詞から「ユーザ登録」という名詞に置きなおしてから翻訳しましょう.そうするとUsersRegistrationClassとなり,他人が読みやすい形になります.

関数名

関数名やメソッド名では,基本的に動詞+名詞の形で名前を付ける場合が多いです.動詞+名詞の形以外にもis(has)+名詞などの形もあります.関数名の決め方については数が多いため,詳細は下記のリンクを参照してください.

プログラムにおいて命名がうまくいくコツ

また,関数名に動詞を使用しますが,幅広い意味を持つ動詞はあまり推奨されていません.例えば,getcheckなどです. getは何かの変数の値を取得する関数なのかなと予想はできますが,web業界だと外部のAPIから情報を取得するなど,同じプログラム内で意味が少し変わってしまったりしてしまいます. また,checkだと変数の値を確認する関数だと予想はできます.しかし,戻り値がbooleanなのか,それともintや変数特有の型なのか判断ができません. 以上のことなどから,幅広い意味をもつ動詞をなるべく使用しないことが読みやすいコードを書くことにつながります. こちらも詳細は,以下のリンクを参照してください.

プログラムの命名で使う/使わない単語

変数名

変数名は基本的に名詞で名前を付ける場合が多いです.もちろん名詞を修飾する形も多く存在します.変数名も関数名と同様に決め方が多いため,関数名の章で紹介したサイトを参照してもらうとより理解ができると思います.

最後に

さて,これまで命名規則などについて説明してきました.

サークルなどでは,コードの内部を詳細までレビューをしたりしますが,会社ではレビューにあまり時間をされられないため,クラス名(モジュール名)や関数名(メソッド名)だけをみて,あらかた判断したりしている感じです.(動作の確認は単体検査などでしている) そのため,クラス名(モジュール名)や関数名(メソッド名)からどんな操作がされるかを判断できるようなコードを書くことで,他人が自分のコードを短い時間で理解することができます. また,他人に理解しやすいコードを書くために多くの英単語を知っておくことで,命名に時間をかけずに済みます.英語の勉強は継続して頑張りましょう.

実務訓練が始まって間もないころ,職場の指導職員からある本を借りて読みました.その本は,大学でも読んだことがある本でした.

そう,「リーダブルコード」です!

今後もプログラムとの関りがあると思っているなら,一度は読むことをお勧めします.実務訓練の職場でも多くの人が読んだことがあるみたいです.

リーダブルコード

これからも楽しみながら,開発をやっていきましょう!