只是想知道,我们什么时候应该真正使用private
或protected
用于模型中的某些方法?
有时我会不厌其烦地将我的方法分组到private
nor中protected
。我只是保持原样。但我知道这一定是一个不好的做法,否则这两个分组将不会在编程中创建。
谢谢。
只是想知道,我们什么时候应该真正使用private
或protected
用于模型中的某些方法?
有时我会不厌其烦地将我的方法分组到private
nor中protected
。我只是保持原样。但我知道这一定是一个不好的做法,否则这两个分组将不会在编程中创建。
谢谢。
record.method()
,那么“public”self.method()
,则为“私有”self.method() # in subclass
,那么“受保护”我会发表我的意见,也许我会对此感到兴奋,但我不关心 Ruby 中的 protected 或 private。实际情况是,Ruby 把你当成人一样对待,如果你想从类外运行私有方法,你可以(有办法 )。您可以在类外运行受保护的方法。你甚至可以重新分配常量......基本上你可以做任何你喜欢的事情。
这就是我喜欢它的原因,这是你的责任。我的感觉是,要将某物标记为受保护或私有,您需要做两件事:
此外,您使测试变得更加困难,因为它可能是测试私有方法的真正痛苦(请参阅What's the best way to unit test protected & private methods in Ruby?了解解决方法)
由于最后两个原因,我不理会它们。如果你真的想在你的类/方法和消费者(无论是代码还是开发人员)之间设置某种屏障,那么还有其他更有效的方法(代理、混淆、加密、密码保护方法等)。否则,为什么不让他们访问您使用的相同工具?
我不知道 Ruby 是一个特例,但我认为答案也与其他语言相同,所以这里是:
私有方法只能由同一类的成员访问,而受保护的方法也可用于扩展声明该方法的基类的类的成员。