в приложении по продажам есть сущность состояние заказа.
Так вот есть таблица OrderState. Также хочется завести enum чтобы в логике приложения проверять не так if(OrderState != 2) а по enum
Здравствуйте, busk, Вы писали:
B>в приложении по продажам есть сущность состояние заказа. B>Так вот есть таблица OrderState. Также хочется завести enum чтобы в логике приложения проверять не так if(OrderState != 2) а по enum
Ну так enum для таких случаев и придуман, что смущает?
Здравствуйте, busk, Вы писали:
B>Привет
B>в приложении по продажам есть сущность состояние заказа. B>Так вот есть таблица OrderState. Также хочется завести enum чтобы в логике приложения проверять не так if(OrderState != 2) а по enum
B>как вы делаете такие вещи?
В C++11 есть enum class.
А делаю как-то так (внимание, C++98/03!):
struct State
{
enum t
{
Pending,
Approved,
Completed,
Rejected
};
};
void checkOrder(State::t state)
{
if (State::Completed == state)
{
// ...
}
}
Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, busk, Вы писали:
B>>в приложении по продажам есть сущность состояние заказа. B>>Так вот есть таблица OrderState. Также хочется завести enum чтобы в логике приложения проверять не так if(OrderState != 2) а по enum
J>Ну так enum для таких случаев и придуман, что смущает?
смущает, что есть класс OrderState который маппится на класс
class OrderState
{
id, name
}
и есть
enum OrderState
{
states
}
это нормально?
есть тогда правило именования может для энама?
Здравствуйте, okman, Вы писали:
O>Здравствуйте, busk, Вы писали:
B>>Привет
B>>в приложении по продажам есть сущность состояние заказа. B>>Так вот есть таблица OrderState. Также хочется завести enum чтобы в логике приложения проверять не так if(OrderState != 2) а по enum
B>>как вы делаете такие вещи?
O>В C++11 есть enum class.
O>А делаю как-то так (внимание, C++98/03!): O>
Здравствуйте, busk, Вы писали:
B>как вы делаете такие вещи?
Делаю иерархию:
OrderState — — — StateAccept
|
|
|
State pending
и метод handle(xxx)
Что в итоге можно развернуть в визитор по необходимости.
Хотя если нужно что-то простое, то делаю как okman говорит — nested enum.
Здравствуйте, busk, Вы писали:
B>смущает, что есть класс OrderState который маппится на класс
B>class OrderState B>{ B> id, name B>}
B>и есть
B>enum OrderState B>{ B> states B>}
B>это нормально? B>есть тогда правило именования может для энама?
А нужно ли мэппить в код OrderState? Я раньше мэппил, но потом оказалось? что это обычно не нужно же. Если это просто себе список возможных значений в БД для проверки целостности — ну пусть там и живет, а в коде оперировать только enum-ом
Тем не менее, если все же есть такие совпадения, то просто enum называется как-то иначе, например OrderStateValue или как-то так, главное чтобы едино по всему проекту.
Здравствуйте, fmiracle, Вы писали:
F>Здравствуйте, busk, Вы писали:
B>>смущает, что есть класс OrderState который маппится на класс
B>>class OrderState B>>{ B>> id, name B>>}
B>>и есть
B>>enum OrderState B>>{ B>> states B>>}
B>>это нормально? B>>есть тогда правило именования может для энама?
F>А нужно ли мэппить в код OrderState?
нужно в фильтры выводить айди — текст для пользовтеля
B>смущает, что есть класс OrderState который маппится на класс
B>class OrderState B>{ B> id, name B>}
B>и есть
B>enum OrderState B>{ B> states B>}
B>это нормально? B>есть тогда правило именования может для энама?
Если позволяет язык, то встраиваем об'явление enum в клас. Можно назвать напеример STATES.
Cоответственно код буде такой:
if (this.state == STATES.NEW) {
...
}
или
if (order.getState() == OrderState.STATES.NEW) {
...
}