Я просто просматриваю часть своего старого кода (у меня есть немного свободного времени), и я заметил довольно длинный оператор switch. В связи с получением новых знаний я с тех пор реорганизовал его в следующей форме:
private Dictionary<string, Action> createView
{
get
{
return new Dictionary<string, Action>()
{
{"Standard", CreateStudySummaryView},
{"By Group", CreateStudySummaryByGroupView},
{"By Group/Time", CreateViewGroupByHour}
};
}
}
Считаете ли вы эту хорошую практику, или это просто случай излишней и ненужной? Я стремлюсь к тому, чтобы новые методы, которые я изучаю, были умными не только ради этого, а на самом деле приносили пользу коду.
Спасибо.
Длинные операторы переключения являются классическим неприятным запахом и всегда являются целью рефакторинга.
«Стандартный» шаг для выполнения здесь - Заменить условный на полиморфизм . Это был один из шагов, перечисленных в книге Мартина Фаулера «Рефакторинг » (опубликованной 11 лет назад в 1999 году).
Теперь, когда так легко обрабатывать функции как объекты (например, с помощью Action), это может быть таким же хорошим решением.
И нет, я не думаю, что вы умны ради этого. Если я захочу добавить еще один вариант в будущем, я легко пойму, что нужно сделать.