只是想知道,我们什么时候才能将private
或protected
用于模型中的某些方法?
有时候我不能不在private
或protected
中对我的方法进行分组。我只是保持原样。但我知道这一定是一种不好的做法,否则这两个分组将不会在编程中创建。
感谢。
答案 0 :(得分:15)
record.method()
,则“公共”self.method()
,则“私人”self.method() # in subclass
使用它,那么“受保护”答案 1 :(得分:2)
我会给出意见,也许我会为此付出代价,但我不打扰Ruby中的protected或private。实际情况是,Ruby会像对待成年人一样对待你,如果你想从课外运行私人方法,你可以(are ways )。您可以在类外部运行受保护的方法。你甚至可以重新分配常数......基本上你可以做任何你喜欢的事。
这就是我喜欢它的原因,这是你的责任。我的感觉是,要将某些内容标记为受保护或私密,您正在做两件事:
此外,你使测试更难,因为它可能是一个真正的痛苦测试私人方法(请参阅What's the best way to unit test protected & private methods in Ruby?了解它的方法)
由于最后两个原因,我不打扰他们。如果您真的想在类/方法和消费者(无论是代码还是开发人员)之间存在某种障碍,那么还有其他更有效的方法(代理,混淆,加密,密码保护方法等)。否则,为什么不让他们访问您使用的相同工具?
答案 2 :(得分:0)
我不知道Ruby是一个特例,但我认为答案与其他语言一样,所以这里是:
私有方法只能由同一个类的成员访问,而protected也可用于扩展声明方法的基类的类的成员。