Я бы обычно писал код без них. ИМО, мертвый код имеет тенденцию указывать неряшливость и / или непонимание.
Конечно, я бы также рассмотрел что-то вроде:
char const *rets[] = {"blah", "foo", "bar"};
return rets[something];
Редактировать: даже с отредактированным сообщением, эта общая идея может работать нормально:
char const *rets[] = { "blah", "foo", "bar", "bar", "foo"};
if ((unsigned)something < 5)
return rets[something]
return "foobar";
В какой-то момент, особенно если входные значения разрежены (например, 1, 100, 1000 и 10000), вместо этого вы хотите использовать разреженный массив. Вы можете реализовать это в виде дерева или карты достаточно хорошо (хотя, конечно, коммутатор все еще работает и в этом случае).