初めに
変数名や関数名には情報を詰め込むべきです。
例えば、 data
や tmp
などは情報があまり含まれていないといえます(経験としてdataを使った際にレビューをいただいたことが)。
情報を詰め込んだ名前とはどのようなものでしょうか。
命名するポイントの中で特に重要だと感じたのは
- 明確な単語かどうか
- 汎用的な名前ではない
- 抽象的より具体的な名前
の三つです。
明確な単語かどうか
get
と言う単語には 「受け取る」「手に入れる」「身につける」などの意味があります。
get
関数があるとき、いかにして上記いずれかの意味と知ることができるでしょうか。
仮に receive
と言う関数名であれば 何かしらを「受け取る」関数であることを推測できそうです。
fetch
であれば何かしらを取ってくる関数であるように感じます。
このように明確な単語を変数や関数名につけてあげることで、より読みやすいコードになります。
コツとして類語辞典をひく、と言うのも挙げられていました。
汎用的な名前ではない
# A data = { first_name: "Rails", last_name: "太郎", age: 20 }
Aの変数名では中身を見るまでどんなデータが入っているかわかりません。
# B user_info = { first_name: "Rails", last_name: "太郎", age: 20 }
Bはどうでしょうか?
中身を見るまでもなく、「userに関する情報なんだな」とわかりますね💪
抽象的な名前より具体的な名前
「昨日ラケットでボールを打つスポーツをして筋肉痛なんだよね〜」
...ラケットでボールを打つスポーツ?卓球かな?テニスかな?スカッシュかな?
抽象的すぎる表現を使うとわかりにくいお話になってしまいます。
例えば send_message_to(contact)
のようなメソッドがあるとします。このメソッドが「問い合わせに対して何らかのメッセージを送る」のは想像に難くないですね。
ただし、send
はいささか抽象的ではないでしょうか?送られてきたものに対して送信はしてるのですが、新規送信のない、返信のみである今回の例の場合 reply_to(conntact)
のようにしてあげると、
問い合わせに対して返信していることが明確になりそうです 💪