对于是否应将度量单位包含在变量中,我已经看到了不同的看法,我不确定如何处理极端情况。
例如,如果我有一个变量来存储从加速度计获得的“加速度”,我是否必须在变量名称中明确说明其测量单位(米/秒平方)?
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;
答案 0 :(得分:4)
至少在第二部分中,Java“日期时间” API的最新更新有一个简单的答案。
int time; // time in what unit??
变成:
Duration somePeriodOfTime ...
这可能告诉我们第一个示例的 ideal 解决方案可能是什么:还定义不同的类型。因此,请勿使用代表正方形物体的双精度型。
创建一个类似Area
的类(理想情况下具有“值”语义),该类始终包含一个数值(可能是双精度)一起及其单元。
然后可以将该单元实现为枚举,然后很好地添加一些内置转换代码,该转换代码几乎可以神奇地用平方尺对米进行平方测量。