Fin*_*las 4 ruby access-specifier
我来自更多的C#背景,但我在业余时间学习Ruby.
给定类,可以制作他们的方法private,public(默认)或protected.虽然我理解它们的用法,但Ruby代码是否通常使用这些修饰符,尽管它是一种动态语言,用户可以轻松地覆盖访问权限?
虽然使用类似的东西Send允许用户访问私有方法,但我只是想知道关于Ruby和访问修饰符的最佳实践是什么?换句话说,我应该在课堂上使用它们吗?
给定类,可以使其方法为私有,公共(默认)或受保护.虽然我理解它们的用法,但Ruby代码是否通常使用这些修饰符,尽管它是一种动态语言,用户可以轻松地覆盖访问权限?
它仍然相对常见,因为它传达意图并最小化您所暴露的界面.一些遵守的惯例:
简单地省略public,因为除非您另有说明,否则所有方法都是公共的,并且方法通常按访问修改进行分组.
即使用户可以覆盖访问权限,但这并不意味着他们应该这样做(以同样的方式,您不会看到C#开发人员正在做疯狂的事情,比如将IL存根注入类中以便他们可以访问私有方法).因此,区分是有用的.
受保护的方法比在C#中更少见,因为Ruby并不真正鼓励继承作为传递行为的手段.通常的行为通常可以重构为Modules然后include/extend根据需要进行调整.
私有方法与C#一样普遍; Ruby经常喜欢许多非常特殊的小方法,然后你可以将它们组合在一起以获得有用的东西.但是你不公开这些方法,因为它们不是你的公共接口的一部分,你想要保持这种无杂乱.
由于私有方法不被视为界面的一部分,因此您可以随意更改它们而不受惩罚.通过将它们设为私有,您可以让其他人注意到这些方法及其实现或定义可能随时发生变化.