モデルのいくつかのメソッドでprivate
実際にいつ使用する必要があるのでしょうか。protected
メソッドをグループ化するのに煩わされないことprivate
もありprotected
ます。そのままにしておきます。しかし、それは悪い習慣であるに違いないことを私は知っています。さもなければ、これらの2つのグループはプログラミングで作成されません。
ありがとう。
モデルのいくつかのメソッドでprivate
実際にいつ使用する必要があるのでしょうか。protected
メソッドをグループ化するのに煩わされないことprivate
もありprotected
ます。そのままにしておきます。しかし、それは悪い習慣であるに違いないことを私は知っています。さもなければ、これらの2つのグループはプログラミングで作成されません。
ありがとう。
record.method()
「public」self.method()
、、、「プライベート」self.method() # in subclass
「保護」私は自分の意見を述べます、そして多分私はそれを蹴るでしょう、しかし私はRubyで保護されたまたはプライベートを気にしません。現実には、Rubyはあなたを大人のように扱います。クラスの外部からプライベートメソッドを実行したい場合は、それが可能です(方法は あります)。クラスの外部で保護されたメソッドを実行できます。定数を再割り当てすることもできます...基本的には、好きなことを行うことができます。
そしてそれが私がそれを好きな理由です、それはあなたの責任です。私の気持ちは、何かを保護またはプライベートとしてマークするには、2つのことをしているということです。
さらに、プライベートメソッドをテストするのは本当に苦痛である可能性があるため、テストが難しくなっています(回避方法については、Rubyで保護されたプライベートメソッドを単体テストするための最良の方法は何ですか?を参照してください)
これらの最後の2つの理由のために、私はそれらを気にしません。クラス/メソッドとコンシューマー(コードまたは開発者)の間に何らかの障壁が本当に必要な場合は、他のより効果的な方法(プロキシ、難読化、暗号化、パスワードで保護されたメソッドなど)があります。それ以外の場合は、使用したのと同じツールへのアクセスを提供してみませんか?
特別な場合としてRubyを知りませんが、答えは他の言語でも同じだと思いますので、ここにあります。
プライベートメソッドには同じクラスのメンバーのみがアクセスできますが、プロテクトは、メソッドが宣言されている基本クラスを拡張するクラスのメンバーにも使用できます。