LoginSignup
2
0

リーダブルコードに学ぶ命名規則

Last updated at Posted at 2024-04-13

はじめに

みなさんはちゃんと命名ができていますか?

他の人が最短時間でコードを理解できるようにするため、適切な命名が重要です

例えば1から10を2乗した合計を求めるコードを見ていきます

例 ( ruby )
# SAMPLE_1
retval = 0
for i in 1..10
  retval += i
end

# SAMPLE_2
sum_squares = 0
for i in 1..10
  sum_squares += i # squares違和感
end

SAMPLE_2ではiが2乗されてないことに違和感を覚えませんか?

上記のコードからも命名の重要さが伝わるかと思います
本記事では、リーダブルコードを参考に命名するための規則をまとめます

順を追って考えることで規則的な命名ができるのではないでしょうか

1. フォーマット規約1に従う

フォーマット規約により、それが何を表しているのか判断できるという利点があります

例 ( javascript )
// コンストラクタ
var x = new DatePicker();

// 通常の関数
var y = pageHeight();

単語を繋ぐ際にもフォーマット規約は重要となってきます
例として4つのケースを記述します

スネークケース
user_name = "cat0"

# ケバブケース
user-name = "cat0"

# キャメルケース
userName = "cat0"

# パスカルケース
UserName = "cat0"

プロジェクトや言語によって使用できるフォーマット規約は変わりますが、一貫性を持たせることが大切です

自分自身やチーム、言語によって決められた規約の命名をしましょう

2. スコープ2を考える

スコープが小さければ短い名前でも良い

例 ( ruby )
    message = "Hello World!"
    puts message

上記のコードはmessageを理解するのに必要な情報がすぐそばにあるのでまだ理解できますが、数十行後にmessageが出てきた際にそれは何を意味しているのか分からなくなりそうです

大きいスコープを持つ変数には、いつ見ても理解できる命名をすることが大切です

3. 汎用的な名前は避ける

下記のtmpは生存期間こそ短いですが、この変数にとって一番大切なことは「一時的な保管」ではありません

tmp = user.name
tmp += " " + user.phone_number
tmp += " " + user.email
puts tmp

これをわかりやすくするためには格納されている情報がわかる命名をします

user_info = user.name
user_info += " " + user.phone_number
user_info += " " + user.email
puts user_info

汎用的な名前は便利ですが、コードを読みにくくしてしまいます

4. 明確な単語を選ぶ

def GetPage(url)

GetではこのメソッドがどこからGetしてくるのかがわかりません
インターネットから取得するのならばFetchPage(), DownloadPage()の方が明確です

状況に合わせて同じ意味でも適した単語を使うようにしましょう

単語 代替案
send deliver, dispatch, announce, distribute, route
find search, exact, locate, recover
start launch, create, begin, open
make create, set up, build, generate, compose, add, new

5. 具体的な名前を使う

TCP/IPポートをサーバがリッスンできるかを確認するメソッド名を定義します。
ServerCanStart()という名前のメソッドを作成してしまうと、名前が少し抽象的です。
具体的な名前にするとCanListenOnPort()になります。
これならメソッドの動作をそのまま表せています。

6. 大切な情報を追加する

変数名に追加する情報は単位だけではく、状況によって改善すると良いです。
以下に例をまとめます。

状況 変数名 改善後
passwordはプレーンテキストなので、処理をする前に暗号化するべきである password plaintext_password
ユーザが入力したcommentは表示する前にエスケープする必要がある comment unescaped_comment
htmlの文字コードをUTF-8に変えた html html_utf8
入力されたdataをURLエンコードした data data_urlenc

7. 誤解されない名前か確認する

最善の名前とは誤解されない名前である。

これに基づきリーダブルコードで推奨されている命名をまとめます。

状況 命名案
上下の限界値 min, max
包含的範囲 first, last
包含/排他的範囲 begin, end
ブール値 is, has

単語に対するユーザの期待にも注意し、get()やsize()には軽量なメソッドが期待されています

最後に

リーダブルコードより命名についてまとめました
1.から順序だてて命名を考えることができれば、より可読性が高くなるのではないでしょうか
本記事では説明しきれていない部分が多くあるので、気になった方はリーダブルコードを読むことをお勧めします

  1. プログラムのコードを一貫した形式に整えるためのルールや規則のこと

  2. ソースコード内の変数や関数が利用できる領域

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0