Sinatraのメモアプリのレビューの中でhelperに定義してメソッド名に対してアドバイスを頂きました。 「メソッド名は動詞で始める」と思い込んでいましたが、間違いだったと気付くことができたので良かったです。
結論
次のような処理内容のメソッド名は動詞で始める必要はない。
- 毎回同じ値を返すだけのプロパティ系のメソッド: 例)
full_name
- 真偽値を返すだけのメソッド(Rubyの場合): 例)
action_required?
- データ型を変換するだけのメソッド: 例)
to_date
- 検証用のメソッド(英文そのものをメソッド名にする): 例)
member_count_should_not_exceed
今回の場合
helperにメモのタイトルが未入力の場合にUntitled
が設定されるようなメソッドを定義しました。
def set_title params[:title].empty? ? 'Untitled' : params[:title] end
PR内で以下のようなコメントをいただきました。
setはしていない気がするので
title_with_default_text
とかですかね?
確かにsetしている訳ではないし、「メソッド名は動詞で始める」と決めつけてメソッド名を考えたような記憶がありました。
コメント中のtitle_with_default_text
というメソッド名を見た際に「動詞で始まっていないけど大丈夫なのかな?」という疑問が浮かびましたが、伊藤さんの記事にあるように「毎回同じ値を返すだけのプロパティ系のメソッド」に該当するので動詞で始める必要はないということに気付くことができました。
盲目的に「メソッドは必ず動詞、メソッドは必ず動詞……」と思い込まないように注意してください。
まさにその通りだなと思いました。反省。
まとめ
Rubyのプラクティス後、久しぶりに命名で指摘されましたがRailsのプラクティスに入った今のタイミングで指摘してもらって良かったと思います。 命名は難しいですが、ちょっとでも分かりやすい命名ができるように語彙力を付けていきたいです。