Какой код с точки зрения проектирования более правильный
Такой:
public List<String> getStringList(int expression){
List<String> list;
switch(expression){
case 1:
list = getList1();
break;
case 2:
list = getList2();
break;
...
}
return list;
}
Или такой:
public List<String> getStringList(int expression){
switch(expression){
case 1:
return getList1();
case 2:
return getList2();
...
}
}
В данный момент мы никак не изменяем и не предопалагаем, что нам нужно изменять список list
в функции getStringList
.
Хотелось бы прочитать обоснованный ответ в пользу того или иного варианта.
В первом случае у нас одна точка выхода их функции, в switch
мы только присваиваем переменную, которую возвращаем, а во втором случае у нас получается несколько точек выхода.
В языках с RAII или try/finally нет никакого правила, по которому предпочтительнее единственная точка возврата из функции. Поэтому писать надо так, как легче читать, никакого другого правила тут нет.
В вашем случае, как мне кажется, введение дополнительной переменной служит только цели единственной точки возврата в функции, так что я бы предпочёл более короткий вариант с return
из середины switch
. Введение дополнительной переменной заставляет читателя помнить о результате до конца switch
'а, и держать наличие его в голове, в то время как ранний return
позволяет сразу отбросить этот случай.
Но это, снова-таки, вопрос личных литературных предпочтений. Пишите, как вам кажется лучше.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я использую BCryptPasswordEncoder для шифрования пароля при регистрации на сайтеНо есть проблема, при логине пароль пользователя не подтверждается
Объясните пожалуйста в теории, как отловить первый запуск приложения? Читал тут, не то, все слишком громоздко
Необходимо считать строки из файла и записать их в массив, а потом отобразить на лейблеНо почему-то русскую кодировку не распознает