Должен ли я структурировать типы с разными уровнями точности в иерархии? - PullRequest
0 голосов
/ 17 ноября 2011

Я пишу библиотеку со структурами разного уровня точности, такими как точка с целочисленными координатами и точка с координатами с плавающей точкой..NET использует Point для своей интегральной структуры и PointF для варианта с плавающей запятой, но недавно я наткнулся на эквивалент Java, который использует Point и вложенный Point.Double.

Мне нравитсяИдея определения типов выглядит следующим образом:

struct Point {
    // integral implementation

    public struct Double {
         // double floating-point implementation
    }
    public struct Long {
         // 64-bit implementation
    }
    // etc..
}

Что мне не нравится, так это переопределение «Double» и «Long» внутри родительского типа.Кто-нибудь использовал этот шаблон и нашел еще какие-либо проблемы, которые возникают из-за этого?Или я должен придерживаться Point, PointD, & PointL?

1 Ответ

3 голосов
/ 17 ноября 2011

Я презираю эту идею.Я считаю вложенные классы деталями реализации содержащего класса, а точка с полями double не является деталью реализации точки с полями int.Вложенные классы используются для инкапсуляции деталей реализации, которые не имеют смысла вне их содержащего класса.Здесь это просто не тот случай.Не делайте этого.

Кроме того, я не понимаю, почему вы просто не согласились бы с соглашением об именах:

struct Int32Point 
struct Int64Point 
struct SinglePoint
struct DoublePoint
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...