Информация об изменениях

Сообщение Re[5]: [CodeJam] - Ranges.V2 (заготовка) + прочие исправлени от 26.04.2016 12:34

Изменено 26.04.2016 12:34 AndrewVK

Здравствуйте, Sinix, Вы писали:

AVK>>Мне кажется что возможность запихнуть ToXxx во From границу намного хуже.

S>Оно валидируется ассертами. Не помню, есть это в коде или не скинул ещё. На перфоманс влияет в границах статпогрешности, в коде эти ассерты не срабатывают — API правильно сделано.

Асерты это не костыли.

AVK>>Ну и вообще какое то сомнительное решение. Перформанс онот может слегка и уучшает, но ценой ухудшения удобства использования.

S>Ну вот есть у тебя диапазоны a = [2..3) и b = (3..4]. В текущем дизайне a.To < b.From вернёт true.
S>В твоём варианте — false, т.к. они равны.

Я пока никакого варианта не предлагал. Нужно как нибудь отделить то, что пользователю придется в голове держать, и то что не придется.
Если оно тебе в алгоритмах нужно — задай два енума — один для передачи в конструктор, второй для хранения, заодно выкинув и Empty, который тоже изрядно невалидных инвариантов порождает. Или, если нескольких байт не жалко — заведи в RangeBoundary флажок From/To. Главное, чтобы дизайн при первом же взгляде не вызывал WTF.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Re[5]: [CodeJam] - Ranges.V2 (заготовка) + прочие исправлени
Здравствуйте, Sinix, Вы писали:

AVK>>Мне кажется что возможность запихнуть ToXxx во From границу намного хуже.

S>Оно валидируется ассертами. Не помню, есть это в коде или не скинул ещё. На перфоманс влияет в границах статпогрешности, в коде эти ассерты не срабатывают — API правильно сделано.

Асерты это костыли.

AVK>>Ну и вообще какое то сомнительное решение. Перформанс онот может слегка и уучшает, но ценой ухудшения удобства использования.

S>Ну вот есть у тебя диапазоны a = [2..3) и b = (3..4]. В текущем дизайне a.To < b.From вернёт true.
S>В твоём варианте — false, т.к. они равны.

Я пока никакого варианта не предлагал. Нужно как нибудь отделить то, что пользователю придется в голове держать, и то что не придется.
Если оно тебе в алгоритмах нужно — задай два енума — один для передачи в конструктор, второй для хранения, заодно выкинув и Empty, который тоже изрядно невалидных инвариантов порождает. Или, если нескольких байт не жалко — заведи в RangeBoundary флажок From/To. Главное, чтобы дизайн при первом же взгляде не вызывал WTF.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>