最善の名前とは誤解されない名前をつける!
ある変数や関数名をつけた際には「他の意味に取られることはないか?」を自問するべきです。
以下では自問・検討の仕方を見ていきます。
曖昧な名前を避ける
変数に対して代入されるものが、何かに処理をくわえて残ったものか、それとも除外されたものなのか。
ここでは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が適切だったりするのが命名の面白いところですね💪