コードを読みやすくする変数名・メソッド名

開発のプロジェクトに入ると、チームメンバーのコードをレビューする事や、自分の書いたコードをチームメンバーにレビューしてもらう事が多くあります。

他の人が書いたコードを読んだとき、「このコード、何を目的としようとして書いているのか全く分からない」と感じることはないでしょうか。 その理由の1つに、「変数やメソッドの名前が分かりにくい」ということが挙げられます。

この問題を解決するために有効なのが、変数やメソッドを変えること。変数がどういう情報を持っているのか、メソッド全体でどんな処理をしているのかが分かるようになるので、コードの読みやすさがぐっと変わるものです。

今回の記事では、「コードを読みやすくする方法」をお伝えします。

変数名のつけ方

Rubyをはじめとしたプログラムでは、数値や文字などのデータを変数に入力し、その変数に入力された値をメモリに出力します。 この変数に分かりやすい名前をつけることで、コードが読みやすくなるのです。

※よくない例

total = get_total(sales)

sales = total / (end_date.strftime(’%Y%m%d’) - start_date.strftime(’%Y%m%d’)).to_i

※よい例

total_sales = calc_total_sales(sales)

target_days = calc_target_days(start_date, end_date)

sales_per_day = total_sales / target_days

 

def calc_target_days

  (end_date.strftime(’%Y%m%d’) - start_date.strftime(’%Y%m%d’)).to_i

end

 

抽象的すぎる単語は使わない

例えば、「number(数字)」「name(名前)」などは、その言葉の示す意味が広すぎます。 コードを書いた人にとっては当たり前のことであっても、後からそのプロジェクトに入ってきた人が読んだ時に、「これ、何の数字ですか?」というように確認が必要になってしまいます。

 

変数名に具体的な情報を含める

先ほどの「数字」であれば、「sales_per_day」(1日当たりの売上高)のように、変数名をより具体的にする、という方法があります。 そうすれば、「この変数は、全員分のデータを計算した結果を表している」「この部分でデータベースの値に変更を加えている」というような事が明確になり、プロジェクトのメンバー間の意思疎通がしやすくなるのです。

メソッド名のつけ方

プログラムでは、クラスやインスタンスから呼ばれる複数の処理を、メソッドとしてまとめることが多くあります。適切な名前をつけることで、コードの見通しがよくなります。

 

メソッドを実行した結果の型が分かるようにする

例えば、boolean型(true/false)を返すメソッドの場合は「member?」のように 語尾を’?’で終える、という一般的な規約があります。 また、「sales_products」(セールス対象の商品)のようなメソッド名をつけることで、 「このメソッドはProductモデルのオブジェクトを返している」と読み手に想像させることができます。

 

適切な動詞を使う

「データの中から条件を満たすものを絞り込む」メソッドの場合、‘filter’よりも’select’の方が処理内容を端的に表しています。 ‘filter’では、「条件に合うものを取得する」のか「除外する」のかを、コードを全て読んで判断しなければならず、読むのに時間がかかってしまいます。

 

どういう操作を行っているか分かるようにする

‘select_xxx’のようなメソッド名の場合、読み手が「条件に合うデータを検索しているメソッドだろう」という前提を持ってコードを読むことが多く、コードの中身を理解する時間の短縮になります。 一方、’create_xxx’なら「新規にデータを作成するメソッドかもしれない」、’destory_xxx’なら「データを削除するメソッドかもしれない」という前提を持ってコードを読むようになります。

まとめ

変数名やメソッド名を工夫するだけでも、読み手がコードを読む時間を短縮することができ、いち早くコードを理解するきっかけになります。 コードの書き方に気を配り、自分のコードを他の人が読んでも分かりやすいようにすることで、メンバー間のやりとりがスムーズになるはず。 自分が人のコードをレビューする際は、「変数名」や「メソッド名」に着目してレビューをするのがいいのではないでしょうか。