函数实例的命名约定 类
Naming convention for functions instancing classes
我已经使用函数作为工厂实现了一个简单版本的工厂模式。这些函数自然 return class 个实例。
此类函数的正确命名约定是什么 returning class 实例?
class ExampleClass0:
pass
class ExampleClass1:
pass
class ExampleClassDefault:
pass
def ExampleClass(param):
if param == 0:
return ExampleClass0()
elif param == 1:
return ExampleClass1()
else
return ExampleClassDefault()
object0 = ExampleClass(0)
object1 = ExampleClass(1)
object2 = ExampleClass(2)
根据 PEP8,ExampleClass
应该命名为 example_class
,但对我来说,如果它被命名为 class 就更清楚了,因为在最后当天它充当 class.
对我来说,当我第一次遇到 python 时,我试图找出代码约定的最佳实践,我真的很喜欢这个 [Google style guide][1]
,它非常有用。在接下来的 table (img) 你会发现一些推荐:
Guidelines derived from Guido’s Recommendations
我相信在这种情况下,背离 PEP 8 是非常合理的。这种做法不是很常见,但有使用它的例子。例如,摘录自 Django Coding style:
Use InitialCaps for class names (or for factory functions that return classes).
示例来自 django sources:
class DeserializationError(Exception):
"""Something bad happened during deserialization."""
@classmethod
def WithData(cls, original_exc, model, fk, field_value):
"""
Factory method for creating a deserialization error which has a more
explanatory message.
"""
return cls("%s: (%s:pk=%s) field_value was '%s'" % (original_exc, model, fk, field_value))
我已经使用函数作为工厂实现了一个简单版本的工厂模式。这些函数自然 return class 个实例。
此类函数的正确命名约定是什么 returning class 实例?
class ExampleClass0:
pass
class ExampleClass1:
pass
class ExampleClassDefault:
pass
def ExampleClass(param):
if param == 0:
return ExampleClass0()
elif param == 1:
return ExampleClass1()
else
return ExampleClassDefault()
object0 = ExampleClass(0)
object1 = ExampleClass(1)
object2 = ExampleClass(2)
根据 PEP8,ExampleClass
应该命名为 example_class
,但对我来说,如果它被命名为 class 就更清楚了,因为在最后当天它充当 class.
对我来说,当我第一次遇到 python 时,我试图找出代码约定的最佳实践,我真的很喜欢这个 [Google style guide][1]
,它非常有用。在接下来的 table (img) 你会发现一些推荐:
Guidelines derived from Guido’s Recommendations
我相信在这种情况下,背离 PEP 8 是非常合理的。这种做法不是很常见,但有使用它的例子。例如,摘录自 Django Coding style:
Use InitialCaps for class names (or for factory functions that return classes).
示例来自 django sources:
class DeserializationError(Exception):
"""Something bad happened during deserialization."""
@classmethod
def WithData(cls, original_exc, model, fk, field_value):
"""
Factory method for creating a deserialization error which has a more
explanatory message.
"""
return cls("%s: (%s:pk=%s) field_value was '%s'" % (original_exc, model, fk, field_value))