我们何时应该考虑使用私人或受保护?

只是想知道,我们什么时候才能真正使用privateprotected的模型中的某些方法?

有时我不能不把我的方法归为privateprotected 。 我只是保持原样。 但我知道这一定是一种不好的做法,否则这两个分组将不会在编程中创建。

谢谢。

  • 如果你打算在外部调用一个方法,记录record.method() ,然后“公共”
  • 如果它只在内部使用, self.method() ,那么“私有”
  • 如果你打算在内部使用它,也可以self.method() # in subclass ,那么“protected”

我会给出我的看法 ,也许我会为它做一个踢,但我不打扰Ruby中的受保护或私有。 实际情况是,Ruby像对待成年人一样对待你,如果你想从课外运行一个私人方法,你可以(有方法 )。 您可以在类外部运行受保护的方法。 你甚至可以重新分配常数……基本上你可以做任何你喜欢的事情。

这就是我喜欢它的原因,这是你的责任。 我的感觉是,要将某些内容标记为受保护或私有,您要做两件事:

  1. 表明 您认为消费者不需要它。
  2. 再猜测别人需要什么。

此外,你正在努力测试,因为它可能是一个真正的痛苦测试私有方法(请参阅什么是在Ruby中对受保护和私有方法进行unit testing的最佳方法?了解它的方法)

由于最后两个原因,我不打扰他们。 如果您真的想在类/方法和消费者(无论是代码还是开发人员)之间存在某种障碍,那么还有其他更有效的方法(代理,混淆,加密,密码保护方法等)。 否则,为什么不让他们访问您使用的相同工具?

我不认为Ruby是一个特例,但我认为答案与其他语言一样,所以这里是:

私有方法只能由同一个类的成员访问,而protected也可用于扩展声明方法的基类的类的成员。