我正在编写一个具有不同精度级别结构的库,例如带有整数坐标的点和带浮点坐标的点。 .NET使用Point
作为其整数结构,使用PointF
作为浮点变量,但我最近偶然发现了使用Point
和嵌套Point.Double
的Java等价物。
我喜欢定义这样的类型的想法:
struct Point {
// integral implementation
public struct Double {
// double floating-point implementation
}
public struct Long {
// 64-bit implementation
}
// etc..
}
我不喜欢的是在父类型中重新定义“Double”和“Long”。有没有人使用过这种模式,发现它出现了更多的问题?或者我应该坚持Point
,PointD
,& PointL
?
答案 0 :(得分:3)
我鄙视这个想法。我认为嵌套类是包含类的实现细节,而带有double
字段的点不是具有int
字段的点的实现细节。嵌套类用于封装在其包含的类之外没有意义的实现细节。在这里,情况并非如此。不要这样做。
另外,我不明白你为什么不遵循命名惯例:
struct Int32Point
struct Int64Point
struct SinglePoint
struct DoublePoint