【问题标题】:Public methods vs public APIs公共方法与公共 API
【发布时间】:2020-09-22 20:54:06
【问题描述】:

在干净的代码书中,有一句话说“公共 API 中的 Javadocs”。

Effective java book 也是一样,有这一项:

“第 56 条:为所有暴露的 API 元素编写 doc cmets”。

所以这是我的问题“所有公共方法都被视为公共 API 吗?”

【问题讨论】:

  • 所有公开的内容,包括方法、构造函数、数据成员、嵌套类、嵌套接口和嵌套枚举,以及我遗漏的任何其他内容,
  • 请注意,如果您将客户端代码的基类提供给子类,那么其受保护的成员也是“公开的 API 元素”。
  • 另见有效 Java 第 15 条:最小化类和成员的可访问性。它更深入地介绍了 API 和访问修饰符。

标签: java code-cleanup effective-java


【解决方案1】:

它们对我来说是不同的东西。

Public API 是公布并发布给全世界使用的 API。因此,预计许多您无法控制的客户端将使用它。这也意味着更改更加困难,因为您需要考虑向后兼容性以及诸如此类的事情,如果您想确保任何更改都不会破坏现有客户端。因此,它们应该在 javadocs 中详细记录以描述实际行为。

Pubic 方法只是一个声明为 public 的 java 方法。您可以声明一个仅供内部使用的公共方法,在这种情况下它不是公共 API。由于它仅在内部使用,因此您可以完全控制使用它的客户端。更改 API 签名及其行为要容易得多,因为您可以更改这些客户端以适应新的更改。

另请参阅this article,了解已发布和公共之间的区别实际上比公共和私有之间的区别更重要。

【讨论】:

    【解决方案2】:

    公共 API 通过公共方法公开。单独的公共方法可能不是 API。如果问题是 API 是否可以由非 REST 点的“普通”类中的方法构成,那么答案是肯定的。

    【讨论】:

      【解决方案3】:

      视情况而定。

      API 是开发人员用来完成某事的工具

      我们是在谈论执行 X 的 Java 库吗?
      好吧,任何公共方法都是 API 的一部分。

      一个 API 甚至可以是:
      一组允许开发人员实现特定结果的解决方案

      单个公共方法不一定会产生有价值的输出,在某些情况下可能需要使用其他方法来获得有意义的输出,但这些过程仍然是 API 的一部分。

      我想指出,API(至少在 Java 中)应该由“公共最终”方法组成,因为方法不应该被调用者覆盖。显然,我们必须查看我们正在谈论的上下文,在某些受限情况下您可能希望允许它。

      我有一个关于这个主题的非常好的资源。

      最近我看到了这个视频The art of building Java APIs: Do’s and Don’ts
      由 Jonathan Giles(Microsoft 的 Java 专家)制作,探索了最佳和最差
      关于构建 API 的实践,它讨论了有效的 Java,并涵盖了本书的一些主题。
      (这些部分在观看时会突出显示)。

      无论如何,这肯定是一个有趣的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-19
        • 2017-11-23
        • 2018-09-27
        • 2015-12-17
        • 2013-07-22
        • 2015-10-01
        • 2015-04-30
        • 1970-01-01
        相关资源
        最近更新 更多