【问题标题】:Do I need to do type checking when preparing library for open source?为开源准备库时是否需要进行类型检查?
【发布时间】:2017-06-03 11:47:18
【问题描述】:

我有我在我的一个项目中使用的小模块。现在我决定将它放在 github 上,所以现在我正在编写一些文档字符串并清理代码。

我有 2 个类的组合,所以初始化如下所示:

foo = Class_1()
bar = Class_2(param1=foo)

我知道Class_2 的第一个参数必须是Class_1 的实例,否则代码将不起作用。但可能只有我自己清楚,因为我编写了Class_2 的代码,但是当使用模块作为 API 时,用户可能不清楚param1 必须是Class_1 的一个实例。如果有人会使用bar = Class_2(param1='foo')。引用会很糟糕,并且无法理解发生了什么。所以问题是:我是否需要检查我的__init__isinstance(param1, Class_1),如果没有用适当的消息提出一个例外,或者编写好的文档就足够了?

【问题讨论】:

  • 因为至少有 X% 的用户不会阅读文档,并且由于好的代码应该是自记录的并防止用户错误使用 - 最好更改算法以防止 已知错误。我们有足够的未知错误需要担心。

标签: python exception-handling open-source


【解决方案1】:

这是非常基于意见的(特别是对 StackOverflow 来说不是很好)——但在我看来,你应该两者都做。

一方面,使用isinstance() 和异常处理都是很好的防御性编码实践。

另一方面,内联文档很好。根据Python developer guide

用于 Python 文档的标记是 reStructuredText,由 docutils 项目开发,由自定义指令修改,并使用名为 Sphinx 的工具集对 HTML 输出进行后处理。

一些 IDE,例如 JetBrains PyCharm,被配置为自动拾取格式良好的 reST 文档字符串,并根据这些约定执行自动类型检查(我发现这非常有用)。另请参阅:PEP 257What is the standard Python docstring format? 了解详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 2021-11-20
    • 2011-05-20
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多