测量单位是否应始终包含在所有变量名称中?

Should units of measurement always be included in all the variable names?

对于是否应该在变量中包含测量单位,我看到了一些不同的观点,我不太确定如何处理极端情况。

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

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;

至少对于第二部分,Java "date time" API 的最新更新有一个简单的答案。

int time; // time in what unit??

变成:

Duration somePeriodOfTime ...

这可能告诉我们第一个示例的理想 解决方案可能是什么:也定义不同的类型。所以不要使用代表正方形的双精度数。

创建一个 class(最好具有 "value" 语义),例如 Area,它始终包含一个数值(可能是双精度值)一起及其单位。

然后可以将该单位实现为枚举,然后您可以很好地添加一些 built-in 转换代码,几乎可以神奇地将平方英尺转换为象限米。