目的
「読みやすいコードを書く」
読みやすいコードを書く上で、わかりやすい変数を命名することは非常に重要。
自分が日頃から意識している命名ルールをまとめる。
*na90ya様にコメントでご指摘いただいた点を改善しております。ありがとうございます!
ルール一覧
-
- df, tmp, data, a, 等の名前は使わない!
-
- 何を指している変数かすぐわかる名前をつける
-
- 一つの変数に一つの意味
-
- 略語を使うならば、意味を残しておく
1. df, tmp, data, a, 等の言葉は使わない!
読みやすいコードを書く目的は、コードレビューやコードの改善、機能の追加等が考えられるが、その時に全ての変数がa1, a2, a3...とかだったら、なんのことやらわからない。
だから、変数名を決める時はめんどくさがらずに意味を持った名前をつける!
*例外
(例)2つの変数の中身を入れ替えるコード
right = 0
left = 1
if right < left:
tmp = right
right = left
left = tmp
print(right, left)
このような場合、tmpという名前で全く問題ない。
tmpはデータの一時保管場所の役割を果たしており、「この変数は他に役割がない」ことを示している。
変数の寿命(変数が3行しか登場しない)が十分短い時はこのように使用してもいい。
*pythonでは下記のように簡単に記載できるが、tmpの例として上記をあげている。
right, left = left, right
2. 何を指しているすぐ変数かわかる名前をつける
その変数名を見て何のデータかすぐにわかる名前をつける
例)new_dataの意味は?
- 新たに生成したデータ
- 何かしらフィルタをかけた後のデータ
newの意味は幅広く一見何を表しているかわからない。
もしも、上記の意味のデータならば
- created_data
- selected_data, filtered_data
等の単語を使うべきだろう。
その言葉を見ただけで、なんのデータかわかるようにするといい。
*オススメのサイト
codic: プログラマーのためのネーミング辞書
日本語を記入すると、それに対応する短くわかりやすい英単語を返してくれるサイト。
使い方はこちら
3. 一つの変数に一つの意味
途中で変数の意味を変える or 一つの意味のデータなのに複数変数名がある はNG!
-
途中で変数の意味を変える
これは当たり前だが、途中で変数の内容が変わったら読みにくい。
一度変数を決めたら、その後は変数を変更しないようにする! -
一つの意味のデータなのに複数変数名がある
user_ID, account_ID, ID ...
別々のIDだから名前を変えていると推測するため、一つのデータには一つの変数名のみを使用する。
4. 略語を使うならば、意味を残しておく
よく使う単語は略したくなる。
filter -> _f
select -> _sel
columns -> col
こうして並べてみると一目瞭然だが、何も知らない人が見たらわからないかもしれない。
だから、できるだけつけるのはやめたほうがいい。
もしつけるのならば、チームで共有する。最初に略語一覧を書く。等を意識する。
まとめ
自分以外の人が読む時のことを常に意識しながらプログラミングすることは非常に重要なので、ぜひ意識して実践して欲しい。
名前をつける上で非常に参考になるサイト・書籍
-
[リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) Dustin Boswell] (https://www.amazon.co.jp/dp/4873115655/ref=cm_sw_r_tw_dp_U_x_PdRACbQAXPAM4 )
以上です。ご意見・感想があれば嬉しいです。