最善の名前とは誤解されない名前をつける!
ある変数や関数名をつけた際には「他の意味に取られることはないか?」を自問するべきです。
以下では自問・検討の仕方を見ていきます。
曖昧な名前を避ける
変数に対して代入されるものが、何かに処理をくわえて残ったものか、それとも除外されたものなのか。
ここではfilter
と言うメソッドが例に挙げられてました。
filterは絞り込んだ結果を選択するのか、除外するのかがわかりにくいですね。
なので、選択するならselect
、除外するならexclude
のような名前にした方が意味が伝わりやすいですね。
ちなみにRubyではfilter
はselect
のエイリアスなので実行結果は同じになります。意味を考えて使い分けられるといいですね。
除外の場合はreject
というメソッドが用意されています。
arr = [1, 2, 3, 4, 5] arr.select { |num| num.even? } #=> [2, 4] arr #=> [1, 2, 3, 4, 5] arr.filter { |num| num.even? } #=> [2, 4] arr.reject { |num| num.even? } #=> [1, 3, 5]
限界値を含めるときはmin
, max
を使う
あるグループへの参加は20人までだとした時に以下のようにしてみます。
TOO_MANY_MEMBERS_LIMIT = 20 if @group.members > TOO_MANY_MEMBERS_LIMIT flash[:danger] = "グループに追加できるメンバー数を超過しています" end
このままだと20を含むか含まないかが曖昧です。
限界値を明確にする時には、min_
やmax_
を頭につけてあげましょう。
MAX_MEMBERS_TO_GROUP
などとすると限界値であることがわかりやすいですね👀
(余談: TO
にするかIN
にするかで悩みました、、IN
だと語気が強いかもと思い、、)
bool値の名前
変数であれば頭にis_
つけたり、メソッドであればお尻に?
つけたりするとわかりやすいよねって話ですね👀
Rubyの組み込みメソッドであるinclude?
なども真偽値を返すメソッドですね。
arr = [1, 2, 3, 4, 5] arr.include?(1) #=> true arr.include?(6) #=> false
複数の名前を検討する
命名するときは複数の名前をあげて、それぞれの長所と短所を比べてよりいい名前を選定しましょう、ということでした。
状況に応じてlength
が適切だったり、size
が適切だったりするのが命名の面白いところですね💪