在计算天文计算的几何时做了一堆编码。生成的代码有点难看,因为事情一直在转换为弧度和从弧度转换。类的一大优点是能够封装诸如单元之类的东西。所以Money就是一个很好的例子。虽然,一般来说,在 Money 类中,您往往会看到不可变的实现,因为一旦我们赚了一笔钱,我们就在附加单位,然后如果我们想改变钱,我们将用期望的目标单位。
有大量关于从弧度转换为度数和宏的帖子。这不是我要问的。我问有没有其他人考虑过做一个像 GeometricValue 这样的类,可能里面有一个 GeometricUnit,可以是弧度或度数的枚举。但是,在这种情况下,我认为我想做的是这样的:
GeometricMeasure elevationAngle = [[GoemetricMeasure alloc] initWithValue:30 andUnits:GeometricUnits.Degrees];
但是几行之后我可以这样做:
double radians = [elevationAngle asRadians];
您可以想象的另一件事是自动转换。我不得不说,当野蛮人在 C++ 运行的顶峰时期疯狂时,运算符重载的论点是愚蠢的,因为人们可以做愚蠢的事情并且复制转换器也很危险,我认为是荒谬的。能够做如下等式会很有意义:
acos(sin(elevationAngle) + sin(hourAngle))
并让代码自动将每个度量转换为所需的操作单位(弧度)。其他人认为这值得考虑吗?还是已经朝这个方向做了一些事情(我找不到)?
谢谢。