【发布时间】:2014-03-09 15:30:48
【问题描述】:
首先,当我问及单位时,我指的是度量单位,例如英寸、英尺、像素、细胞。我不是指像 int 和 float 这样的数据类型。
Wikipedia 将此称为逻辑数据类型,而不是物理数据类型。
我想知道命名变量的最佳方式。
这里有一些代码来完成我的要求:
board_length=8 #in inches
board_length=8*12 #Convert from feet to inches
请注意,它们都是整数(或浮点数,我不在乎),但我已经更改了单位。我也保持变量名相同。我可以建立一个约定,这就是这个问题的目的。如果没有指导,我可能会这样做:
board_length=8
board_length_inches=8*12
我认为这是一种临时的做事方式。或者,我可以建立一个约定:
Fboard_length=8
Iboard_length=8*12
或我同样不喜欢的其他变体。如何以描述性的方式命名变量,同时尽可能接近PEP-08?
为了尽可能清楚,变量可能具有不同的数据类型,但单位是相同的(无论是存储为整数还是浮点数,英寸都具有相同的命名)
【问题讨论】:
-
根据单位对脚本的重要性,您可以考虑根据每个单位制作类型子类。每个“度量单位”(长度、重量等)都有其继承内置类型的 on 类,并且对于各个单位都有自己的子类。然后,这些单元将具有转换为相同类型的所有其他单元的方法。这将是很多工作,所以你需要问问它是否真的值得
-
或者您可以装饰内置函数以具有跟踪单位的属性或方法
-
我不会太担心这个。我想不出任何情况下您需要在不同的单位中持续存储相同的值。我会这样做 -
board_length = 24 # in inches(几行之后)print(to_feet(board_length)),或FEET = 12; print(board_length*FEET)。 -
我在这种情况下使用
board_length_inches。保持简单。 -
我和@sweeneyrod 在一起。换句话说,您的策略应该是选择一些您将在内部用于所有计算的单位,并且始终如一地使用它。您只需要在交互时(与人类用户,或与需要除您正在使用的单位以外的某些模块)交互时关心不同单位之间的转换,并且您会在这些接口点使用恰当命名的转换函数或方法你的代码。
标签: python naming-conventions pep8