おさとの雑記帳

日々の学習のアウトプットに使っていきます!

【リーダブルコード】第三章  誤解されない名前 の要約

最善の名前とは誤解されない名前をつける!

ある変数や関数名をつけた際には「他の意味に取られることはないか?」を自問するべきです。
以下では自問・検討の仕方を見ていきます。

曖昧な名前を避ける

変数に対して代入されるものが、何かに処理をくわえて残ったものか、それとも除外されたものなのか。
ここではfilterと言うメソッドが例に挙げられてました。
filterは絞り込んだ結果を選択するのか、除外するのかがわかりにくいですね。
なので、選択するならselect、除外するならexcludeのような名前にした方が意味が伝わりやすいですね。

ちなみにRubyではfilterselectエイリアスなので実行結果は同じになります。意味を考えて使い分けられるといいですね。
除外の場合は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が適切だったりするのが命名の面白いところですね💪