Искусство простоты — загадка сложности” Дуг Хортон
Не стесняйтесь пропустить этот раздел. Здесь необходимо задокументировать процесс и решения, принятые во время проектирования, чтобы иметь возможность пересмотреть и переоценить и обеспечить актуальность и правильность этих решений и, в конечном счете, дизайн. Тем не менее, этот раздел может быть полезен для понимания того, почему и как были приняты определенные решения, и почему Boost.Convert такой, какой он есть.
Boost.Convert был разработан для удовлетворения следующих требований пользователей:
(R1)Boost.Convert должен обеспечивать механизм и интерфейс, которые принимают значение типа TypeIn и дают значение типа TypeOut с использованием алгоритма типа Converter;
(R2)Boost.Convert должен обеспечивать механизм и интерфейс для указания на успешность или неудачу запрашиваемого преобразования;
(R3)Boost.Convert должен обеспечивать полнофункциональные интерфейсы для двух различных программных потоков, где
(R3b) нормальные и обрабатывающие ошибки потоки являются частью одного и того же программного потока (небросной интерфейс);
(R4) Бросающий интерфейс возвращает результат успешного преобразования или выбрасывает исключение;
(R5) Интерфейс без броска возвращает результат и/или некоторое указание на успешность или неудачу преобразования;
(R5a) должны быть средства для отличия успеха от неудачи;
(R5b) результат преобразования должен быть доступен только при успешном преобразовании;
(R5c) при сбое конверсии вместо этого возвращается необязательное значение запаса;
(R5d) в случае неисправности (без резервного копирования) попытка получить результат приводит к исключению;
(R6)Boost.Convert должен обеспечивать единый интерфейс, подходящий для общего программирования;
(R7)Boost.Convert не должен вмешиваться или перехватывать любые исключения, которые не являются частью официального интерфейса преобразователя (т.е. исключения, вызванные неисправностью и т.д.);
(R8) Конвертеры должны быть независимыми от инфраструктуры Boost.Convert.
Статья Design Notes раздела Chapter 1. Boost.Convert 2.0 Chapter 1. Boost.Convert 2.0 может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.