Это плохая практика, чтобы иметь несколько возвратов?
У правила Sonar Lint "Методы не должны быть слишком сложными" (squid:MethodCyclomaticComplexity) есть пример использования более одного оператора return в программном блоке. (см. https://groups.google.com/forum/ для ознакомления с правилами вычисления цикломатической сложности).
Возвраты сокращают коды в ветви и приводят к меньшим кодовым блокам. Например,
int findBranchNumber(String input) { if ("branch1".equals(input)) { возврат 1; } if ("branch2".equals(input)) { возврат 2; } // .... возврат -1; }
Альтернатива будет использовать переменную метода (в этом случае) или более крупные блоки. Кто бы ни читал код, он должен прочитать весь метод, прежде чем он / она поймет, что только первые 3 строки имеют отношение к "branch1".
Пожалуйста, порекомендуйте...
1 ответ
Я лично делаю, как вы показываете в примере. Только будьте осторожны, если вы выделяете ресурсы (например, открытие файла, выделение памяти и т. Д.) И должны быть освобождены по возвращении из функции. В этом случае может быть использован трюк с прокатом Goto Line, описанным в первом ответе /questions/38238956/primeryi-horoshih-gotos-v-c-ili-c/38238982#38238982