Ruby 区分gem和#x27;“外部和内部”;“公众”;应用程序编程接口?
在编程世界中,“公共”和“私有”函数/方法之间的区别随处可见。许多语言将这种区别形式化。Ruby有一个选择加入版本,带有Ruby 区分gem和#x27;“外部和内部”;“公众”;应用程序编程接口?,ruby,Ruby,在编程世界中,“公共”和“私有”函数/方法之间的区别随处可见。许多语言将这种区别形式化。Ruby有一个选择加入版本,带有公共/私有/受保护的访问修饰符。在这个框架中,public方法是一种对调用它的位置没有语言强制限制的方法 然而,一个编写良好的库(gem)有一个不同意义上的“公共”API。gem的公共API由作者打算供gem消费者使用的所有构造组成。文档、测试和稳定性承诺可以集中在这个公共API上 这与“公共”的访问修饰符意义上的公共API不同。例如,您的gem可能会向其用户公开某个类AA在内
公共
/私有
/受保护的
访问修饰符。在这个框架中,public
方法是一种对调用它的位置没有语言强制限制的方法
然而,一个编写良好的库(gem)有一个不同意义上的“公共”API。gem的公共API由作者打算供gem消费者使用的所有构造组成。文档、测试和稳定性承诺可以集中在这个公共API上
这与“公共”的访问修饰符意义上的公共API不同。例如,您的gem可能会向其用户公开某个类A
A
在内部使用类B
。对于A
调用B
上的方法,B
的方法必须是public
。但如果B
不打算被gem消费者直接使用,那么B
就不是gem公共API的一部分
两个问题:
- “公共”一词的过度使用令人困惑。有没有其他公认的术语来区分这两种含义
- gems是否有任何语言特性或工具可以形式化gem的公共API(即限制对gem内部
方法的访问)public
注意:我发现了,但它并没有完全回答我在2021年提出的问题。如果您的类、模块或方法不适用于gem的最终用户,您可以以注释的形式留下警告,说明它们是供内部使用的,可能会意外更改。不过,这并不是gem作者所期望的,大多数人只是专注于记录核心功能。如果人们用错了,这不是你的问题。