python:装饰器名称应该是动作还是描述?

时间:2012-06-15 19:21:20

标签: python coding-style decorator

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

A)

@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)一个描述(装饰者让程序员知道函数的一个属性)?

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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

其中使用的一些示例装饰器名称为countcallsdump_args,与ignore_exceptions的{​​{1}}更为一致。

一致性是选择其中一种的唯一原因,因为两者都清楚地说明了发生的事情。