良い変数名をつけるために気をつけるべきこと

コードを綺麗に書くのに、読みやすいコードを書くのに変数名は非常に重要です。どのような変数名をつけたら良いか、いくつかの観点を紹介します。

重要なのはチームやプロジェクトの方針に則ることであり、その中で読みやすくするために、どのような変数をつけたら良いのかを考えることです。以下に記載したことが絶対に良い・悪いという訳ではありません

しかし、全く気にせずに変数名をつけるより、これらの観点を意識して取捨選択しながら変数を命名することをおすすめします。


意味を持たない変数名をつけない

変数名には、その変数の値が示す意味・情報を持たせたほうが良いです。例えば、resultx などの変数名は、ほとんど意味がありません。特にスコープが広い場合は好まれません。しかし、スコープが狭い、例えばfor文内のインデックスとして i を使用することなどは、問題ありません。

以下の例では、苗字と名前に”さん”をつけてフルネームを返す関数ですが、良い例のほうが直感的でがわかりやすいです。特に、引数がx, yだと、どちらが苗字かわからなくなります。引数の名前は意味を持たせ、キーワード引数で関数呼び出しすると、可読性が高くなります。

良い例

def get_full_name(given_name, surname):
    full_name = surname + given_name + 'さん'
    return full_name


悪い例

def get_full_name(x, y):
    result = y + x + 'さん'
    return result

意味がわからなくなるほど略さない

変数名が長くなるとコードの文字数が多くなるため、短い変数名が好まれます。そのため、適宜、変数名の単語を略したりします。たとえば、画像をimageという変数ではなく、img としたり、メッセージをmessage ではなくmsgと略すことがよくあります。しかし、略しすぎるとコードを書いた人以外は意味がわからなくなるので気をつけましょう。

変数名は意味がわかる範囲で略すのが良いでしょう。


良い例

top_icon_img_path = '/home/img/top_icon.png'
top_icon_img_width = 30

side_icon_img_path = '/home/img/side_icon.png'
side_icon_img_width = 50


悪い例

tii_p = '/home/img/top_icon.png'
tii_w = 30

sii_p = '/home/img/side_icon.png'
sii_w = 50

対になっている対義語・反対語を使う

日本人は英語がネイティブではないので、英語の対義語・反対語を間違えて使ってしまうケースがあります。よくあるのが start の反対に finish を使ってしまう、top の反対に down を使ってしまうなどです。これも意識して調べたりすると、読みやすいコードになるでしょう。

良い例

start_position = 0
stop_position = 100
area = (start_position, stop_position)


悪い例

start_position = 0
end_position = 100
area = (start_position, end_position)

やや間違えやすい対義語・反対語をまとめてみました。

  • start(動き始める) ⇔ stop(止まる / 止める)
  • begin(取りかかる) ⇔ end(完結), finish(段階的な終わり)
  • top(上) ⇔ bottom(下)
  • up(上がる) ⇔ down(下がる)
  • under(未満) ⇔ over(以上)
  • next(次) ⇔ current(今) ⇔ previous(前)
  • front, fore(前) ⇔ back, rear(うしろ)
  • head(頭) ⇔ tail(尾), foot(足)
  • first(最初) ⇔ last(最後)
  • insert(挿入) ⇔ update(更新) ⇔ delete(削除)
  • create(作る) ⇔ destroy(壊す / 破棄する)
  • add(加える) ⇔ remove(取り除く)

Bool型はどちらが真でどちらが偽かわかるようにする

Bool型の変数の場合、真の場合はどちらで、偽の場合はどちらなのかわかるような命名なのが好ましいです。

例えば、student_flag という名前だと学生の場合Trueなのか、学生じゃない場合Trueなのかわかりにくいいです。しかし、is_student という変数名であれば、学生の場合がTrueであることが変数名からわかります。

同様にBool型で has_xxxxxx , can_xxxxxx という命名もよく使われます。

  • is + 名詞/形容詞
  • has + 名詞
  • can + 動詞


良い例

is_student = True # 学生である
has_card = True # カードを持っている
can_login = True # ログインできる


悪い例

student_flag = True
card_flag = True
login_flag = True

リスト, 集合, タプル には複数形を使う

リストや集合など、複数のデータを保持している変数名は複数形をつけることが好ましいです。その変数は複数データを保持しているという情報を、変数名に付与できるため、可読性が上がります。

良い例

new_books = ['我輩は猫である', '三四郎', '羅生門']

for new_book in new_books:
    print(f'{new_book}が入荷しました!')

>> 我輩は猫であるが入荷しました! 
>> 三四郎が入荷しました! 
>> 羅生門が入荷しました!


型の情報を持つシステムハンガリアン記法はむやみに使わない

型情報を変数名の接頭や接尾に付与する方法を、システムハンガリアン記法(ハンガリアン記法と略す場合もある)と言います。

例えば str_nameerror_code_int などです。

Pythonは動的型付け言語であり、後々の修正で変数の型が変わる場合が十分にありえます。その場合、型をかえるだけで変数名を全て変えないといけないという手間が発生したり、その表記に慣れていない人にとっては可読性を下げるだけなので、むやみに使わない方が良いです。

ただし、明示的に型を表現したい場合(型変換の関数など)に限っては使っても良いと思います。

良い例

item_name = 'バナナ'
amount = 100

print(f'{item_name}は{amount}円です。')
>> バナナは100円です。


悪い例

item_name_str = 'バナナ'
amount_int = 100

print(f'{item_name_str}は{amount_int}円です。')
>> バナナは100円です。


以上、6つのことに気をつけて変数の命名をしてみましょう!


関連記事

このエントリーをはてなブックマークに追加