Ruby 区分gem和#x27;“外部和内部”;“公众”;应用程序编程接口?

Ruby 区分gem和#x27;“外部和内部”;“公众”;应用程序编程接口?,ruby,Ruby,在编程世界中,“公共”和“私有”函数/方法之间的区别随处可见。许多语言将这种区别形式化。Ruby有一个选择加入版本,带有公共/私有/受保护的访问修饰符。在这个框架中,public方法是一种对调用它的位置没有语言强制限制的方法 然而,一个编写良好的库(gem)有一个不同意义上的“公共”API。gem的公共API由作者打算供gem消费者使用的所有构造组成。文档、测试和稳定性承诺可以集中在这个公共API上 这与“公共”的访问修饰符意义上的公共API不同。例如,您的gem可能会向其用户公开某个类AA在内

在编程世界中,“公共”和“私有”函数/方法之间的区别随处可见。许多语言将这种区别形式化。Ruby有一个选择加入版本,带有
公共
/
私有
/
受保护的
访问修饰符。在这个框架中,
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作者所期望的,大多数人只是专注于记录核心功能。如果人们用错了,这不是你的问题。