
オブジェクト指向について質問です。
こちらの記事から引用いたします。
いい例として、レシーバとインスタンスメソッドは、他動詞と目的語の関係であるとあります。
そして、悪い例として、レシーバとインスタンスメソッドは、主語と他動詞の関係とあります。
いい例
cow.grow # <= I grow up the cow. その結果 cow.age はインクリメントされる、などの作用が起こる。 file.delete # <= I delete the file. その結果、(プログラムにとっては)外部のファイルシステム上でファイルが消える作用を起こす。 job.perform # <= I perform the job.
悪い例
manager.evaluate(member) # <= 語順そのまま A manager evaluates his member.
しかし、railsチュートリアルだと以下のようなメソッドを実装しているんですよね。
これは、user follow other user、なので悪い例にあてはまるケースですよね。
app/models/user.rb
1 # ユーザーをフォローする 2 def follow(other_user) 3 active_relationships.create(followed_id: other_user.id) 4 end 5 6 # ユーザーをアンフォローする 7 def unfollow(other_user) 8 active_relationships.find_by(followed_id: other_user.id).destroy 9 end
https://railstutorial.jp/chapters/following_users?version=4.2
これはこの記事の主張が間違っているのか、チュートリアルがオブジェクト指向の原則から外れているのかでいうとどちらでしょう?
回答2件
あなたの回答
tips
プレビュー