【问题标题】:python: should decorator names be actions or descriptions?python:装饰器名称应该是动作还是描述?
【发布时间】:2012-06-15 19:21:20
【问题描述】:

假设我有一个装饰器,它会导致函数打印出任何异常并在发生异常时返回 None,而不是失败。假设这是一个好主意,那么首选的命名风格是什么?

一)

@ignore_exceptions
def foobar(a, b, c):
    raise ValueError("This function always fails...")

b)

@ignores_exceptions
def foobar(a, b, c):
    raise ValueError("This function always fails...")

也就是说:a) 应该是一个命令(装饰器告诉函数做一些不同的事情),还是 b) 一个描述(装饰器让程序员知道函数)?

【问题讨论】:

  • 嗯,b) 将打印出 NameError,因为可能没有“ValeuError”这样的类型。 :) 但这不是一个严肃的问题。
  • @abarnert:哈,确实 =P。固定

标签: python coding-style decorator


【解决方案1】:

我认为活动版本 (ignore_exceptions) 比描述性版本 (ignores_exceptions) 更常用,至少在我熟悉的 Python 代码库中是这样。

PEP 8 指南确实有一个关于 naming conventions 的部分,但在这种情况下它并没有提供太多帮助。无论如何,代码库的一致性是最重要的。

【讨论】:

    【解决方案2】:

    我想说ignore_exceptions 在这里更好,这只是基于我在PythonDecoratorLibrary 页面中看到的内容。

    其中使用的一些示例装饰器名称为countcallsdump_args,与ignore_exceptionsignores_exceptions 更一致。

    一致性确实是选择一个而不是另一个的唯一原因,因为两者都清楚地说明了正在发生的事情。

    【讨论】:

    • 实际上,查看那里的示例,看起来大多数都是描述(属性、记忆、咖喱等)——除非有明显的动作动词,在这种情况下它们使用它(countcalls,apply等)。这不是那么一致 - 但如果你想保持一致,我猜 ignore_exceptions 更好。
    猜你喜欢
    • 2012-12-08
    • 2019-08-01
    • 2013-03-12
    • 2020-07-24
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 2017-03-17
    相关资源
    最近更新 更多