У меня есть перечисление в одном из моих классов моделей, поэтому мне не нужно беспокоиться о том, что в него передаются неправильные значения.Уменьшение дублирования кода при использовании перечислений в коде модели по отношению к базе данных и графическому интерфейсу
Проблема в том, что у меня есть много дублирования кода на протяжении всего моего кода из-за указанного перечисления. Всякий раз, когда я хочу, чтобы изменить перечисление я также должен изменить эти части моего кода, чтобы сделать всю работу вещи:
- Изменить перечисление самого
- Изменить определение SQL таблицы (я использую MySql перечисления)
- Изменение таблицы перевода enumToString в моем слое доступа к данным (мне нужна строка для запроса SQL)
- Изменить перевод таблицы stringToEnum в моем слое доступа к данным (преобразовать извлеченное значение обратно на правильную запись перечислений)
- Измените таблицу перевода enumToPrettyString для моего графического интерфейса использование (отображение удобочитаемых строк вместо базы данных хранятся один)
- Изменить список всех доступных записей перечислений, так что я могу заполнить выпадающий ящик в моем GUI со всеми возможными записями для пользователя, чтобы выбрать
Я знаю, что классы Javas Enum более мощные, и вы можете добавить много этой информации непосредственно в определение записи перечисления, но перечисления C++ являются целыми числами внутри, поэтому я не получаю этого удобства.
Любые идеи, как я мог бы свести к минимуму дублирование кода здесь?
У вас есть '' две большие перечисления' * - хорошо: (1) Что означает «большой»: много элементов? (2) Разве ваша проблема не зависит от количества перечислений: не лучше ли было бы сократить до простого * перечисления? – Wolf
Вы правы, я буду перефразировать вопрос, поскольку он одинаковый для обоих перечислений. «Большой» означает где-то от 10 до 30 записей. –
Предлагает создать 'DLL/.so', который будет абстрагировать все функциональные возможности конверсий и обеспечит именно то, что требуется клиентам' DLL/.so'. Таким образом, только определение «enum» будет меняться при добавлении/удалении/изменении членов/записей enum. – sameerkn