我应该在层次结构中构造具有不同精度级别的类型吗?

时间:2011-11-16 21:46:08

标签: .net design-patterns naming-conventions

我正在编写一个具有不同精度级别结构的库,例如带有整数坐标的点和带浮点坐标的点。 .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”。有没有人使用过这种模式,发现它出现了更多的问题?或者我应该坚持PointPointD,& PointL

1 个答案:

答案 0 :(得分:3)

我鄙视这个想法。我认为嵌套类是包含类的实现细节,而带有double字段的点不是具有int字段的点的实现细节。嵌套类用于封装在其包含的类之外没有意义的实现细节。在这里,情况并非如此。不要这样做。

另外,我不明白你为什么不遵循命名惯例:

struct Int32Point 
struct Int64Point 
struct SinglePoint
struct DoublePoint