7

假设我有一个装饰器,它会导致函数打印出任何异常并在发生异常时返回 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)描述(装饰器让程序员知道函数的属性)?

4

2 回答 2

7

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

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

于 2012-06-15T19:26:33.097 回答
2

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

那里使用的一些示例装饰器名称是countcallsand dump_args,与ignore_exceptionsthan更一致ignores_exceptions

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

于 2012-06-15T19:27:36.237 回答