Показать сообщение отдельно
Старый 07.12.2012, 09:06   #3  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5813 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
сложно найти все switch, которые относятся к данному случаю (в Аксапте к данному enum)
Как раз для enum'ов switch очень даже прекрасно подходит, если использовать простые правила касаемо default:
  • всегда использовать блок default;
  • либо явно предусматривать в нем логику для "всех остальных" случаев, либо ставить там заглушку, чтобы код сразу валился при неизвестных на момент разработки значениях
Например:
X++:
switch (noYesValue)
{
    case NoYes::No :
        // ...
        break;
    case NoYes::Yes :
        // ...
        break;
    default :
        throw error(Error::unsupportedEnumValue(noYesValue));
}
Здесь Error::unsupportedEnumValue() - метод вида:
X++:
public static LabelType unsupportedEnumValue(anytype _enumValue)
{
    return strfmt(@"Значение %1 (%2) не поддерживается", _enumValue, any2int(_enumValue));
}
За это сообщение автора поблагодарили: Stitch_MS (2).