应该在所有变量名称中始终包含度量单位吗?

时间:2019-07-03 17:49:13

标签: java naming-conventions

对于是否应将度量单位包含在变量中,我已经看到了不同的看法,我不确定如何处理极端情况。

例如,如果我有一个变量来存储从加速度计获得的“加速度”,我是否必须在变量名称中明确说明其测量单位(米/秒平方)?

Double acceleration; // m/s^2
// or this
Double accelerationMetersPerSecondSquared
// or maybe this
Double accelerationMeterPerSecSqr

如您所见,我担心的是,如果测量单位很复杂,并且变量的名称可能很长,例如加速度(已知以m / s ^ 2为单位),有它?

当然,在其他情况下,必须具有度量单位,例如具有存储时间的变量。

int time; // time in what unit??
// this is more clear
int timeInSeconds;

1 个答案:

答案 0 :(得分:4)

至少在第二部分中,Java“日期时间” API的最新更新有一个简单的答案。

int time; // time in what unit??

变成:

Duration somePeriodOfTime ...

这可能告诉我们第一个示例的 ideal 解决方案可能是什么:还定义不同的类型。因此,请勿使用代表正方形物体的双精度型。

创建一个类似Area的类(理想情况下具有“值”语义),该类始终包含一个数值(可能是双精度)一起及其单元。

然后可以将该单元实现为枚举,然后很好地添加一些内置转换代码,该转换代码几乎可以神奇地用平方尺对米进行平方测量。