Страницы

Поиск по вопросам

вторник, 11 июня 2019 г.

Проектирование кода: использование return в switch

Какой код с точки зрения проектирования более правильный
Такой:
public List getStringList(int expression){ List list;
switch(expression){ case 1: list = getList1(); break; case 2: list = getList2(); break; ... } return list; }
Или такой:
public List getStringList(int expression){ switch(expression){ case 1: return getList1(); case 2: return getList2(); ... } }
В данный момент мы никак не изменяем и не предопалагаем, что нам нужно изменять список list в функции getStringList
Хотелось бы прочитать обоснованный ответ в пользу того или иного варианта.
В первом случае у нас одна точка выхода их функции, в switch мы только присваиваем переменную, которую возвращаем, а во втором случае у нас получается несколько точек выхода.


Ответ

В языках с RAII или try/finally нет никакого правила, по которому предпочтительнее единственная точка возврата из функции. Поэтому писать надо так, как легче читать, никакого другого правила тут нет.
В вашем случае, как мне кажется, введение дополнительной переменной служит только цели единственной точки возврата в функции, так что я бы предпочёл более короткий вариант с return из середины switch. Введение дополнительной переменной заставляет читателя помнить о результате до конца switch'а, и держать наличие его в голове, в то время как ранний return позволяет сразу отбросить этот случай.
Но это, снова-таки, вопрос личных литературных предпочтений. Пишите, как вам кажется лучше.

Комментариев нет:

Отправить комментарий