Догма «единой точки выхода» происходит со времен структурированного программирования.
В свое время структурированное программирование было ХОРОШИМ, особенно как альтернатива спагетти-коду GOTO, который был распространен в винтажных кодах Фортрана и Кобола 1960-х и 1970-х годов.Но с популярностью таких языков, как Pascal, C и т. Д. С их более широким диапазоном структур управления, структурированное программирование ассимилировалось в массовое программирование, и некоторые догматические аспекты перестали пользоваться популярностью.В частности, большинство разработчиков рады иметь несколько выходов из цикла или метода ... при условии, что это облегчает понимание кода.
Мое личное мнение таково, что в данном конкретном случае симметрия второгоАльтернатива облегчает понимание, но первая альтернатива почти так же удобочитаема.Последний вариант кажется мне излишне многословным и наименее читабельным.
Но @Jon Skeet отметил, что в вашем коде есть гораздо более существенная стилистическая проблема;то есть отсутствие блоков {} вокруг операторов then и else.Для меня код должен быть написан так:
private String resolveViewName(Viewable viewable) {
if (viewable.isTemplateNameAbsolute()) {
return viewable.getTemplateName();
} else {
return uriInfo.getMatchedResources().get(0).getClass().toString();
}
}
Это не , а проблема красивости кода.На самом деле есть серьезный смысл всегда использовать блоки.Примите во внимание следующее:
String result = "Hello"
if (i < 10)
result = "Goodbye";
if (j > 10)
result = "Hello again";
На первый взгляд, результат будет «Hello again», если i
меньше 10 и j
больше 10. На самом деле это неправильное прочтение- нас обманули неправильные отступы.Но если бы код был написан с { }
вокруг тогдашних частей, было бы ясно, что отступ был неправильным;например,
String result = "Hello"
if (i < 10) {
result = "Goodbye";
}
if (j > 10) {
result = "Hello again";
}
Как видите, первый }
выделяется, как больной большой палец, и говорит нам не доверять отступам как наглядному признаку того, что означает код.