Вернитесь к первоначальным значениям различных значений регистра. Что представляют собой случаи A, B и C? Если A и B должны выполнять частично один и тот же код, они должны иметь некоторое сходство. Найди их и вырази по-другому.
Следующий пример проясняет ситуацию. Предположим, что A, B и C - это 3 разных вида животных, и дублированный код для A и B фактически типичен для животных, которые могут летать. Вы можете написать свой код так:
if (can_fly(choice))
{
stmt;
}
switch( choice )
{
case A:
do_stmt_related2A;
break;
case B:
do_stmt_related2B;
break;
case C:
something_different();
break;
}
Таким образом, если третий вариант D будет добавлен позже в ваше приложение, шансы забыть дублирующийся код "stmt" будут немного меньше.
Если вы действительно хотите предотвратить вызов функции (to can_fly), а A, B и C являются числовыми константами, вы можете использовать битовые маски. В этом примере мы используем один бит, чтобы указать, что животное может летать:
if (choice & BIT_CAN_FLY)
{
stmt;
}
switch( choice )
{
case A:
do_stmt_related2A;
break;
case B:
do_stmt_related2B;
break;
case C:
something_different();
break;
}