Задать вопрос

Сколько return может быть в методе?

Здравствуйте!
Товарищ заявил что в одном методе должен быть 1 return
тоесть

function ($a) {
$return = null;
if ($a!=1) {
//a lot of code here
$return = 'a!=1';
}
else {
$return =  'a=1';
}
return $return;
}


а я ему же предлагаю
function($a) {
if($a==1) return 'a=1';
//a lot of code here
return 'a!=1';
}


Он пишет типо ему препод на с 1 курса в голову вбивал что если больше 1 return то
портится структурное программирование

Разрулите ситуацию
  • Вопрос задан
  • 2237 просмотров
Подписаться 1 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Stalker_RED
@Stalker_RED
Вопрос стиля.
Строго говоря, увеличение кол-во точек выхода увеличивает цикломатическую сложность, но читабельность важнее, имхо. Если в начале метода сразу прописаны условия при которых он возвращает какие-то фиксированные значения, бросает исключение и т.п., то это хорошо.

UPD: В структурном программировании есть концепция "single entry and a single exit", которая кабы говорит нам, что "return early" - это плохо. Начинать читать можно отсюда https://en.wikipedia.org/wiki/Return_statement#Mul...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 8
miraage
@miraage
Старый прогер
Я бы посмеялся, если бы услышал такое. :)
Сколько надо для читабельности/бизнес-логики, столько и пишите.
Ответ написан
Комментировать
Ну один ретурн как минимум заставит делать лишние переменные для хранения данных перед возвратом.
Так что лучше несколько, по крайней мере как по мне.
Ответ написан
Комментировать
@heahoh
Full stackoverflow developer
Если нет необходимости в дальнейшем выполнении скрипта, то почему бы и не использовать несколько return. Предложенный Вашим знакомым вариант более приемлем, так как нет хардкода - поддержка такого кода, изменения займут меньше времени
Ответ написан
Комментировать
mmmaaak
@mmmaaak
по мне так без разницы. Зато с несколькими return-ами удобно обрывать дальнейшее выполнение метода при ошибках в аргументах:
function (err, data) {
        if(err) return; //-->
        ....
    }
Ответ написан
Комментировать
Тут дело вкуса. Я за компактность, так что второй вариант на мой взгляд лучше
Ответ написан
Комментировать
@memba
Да есть целые секты программистов...
- Функция должна иметь только один выход...
- Функция не должна быть больше N строк

Это дело стиля и определяется командой программистов.
Ответ написан
Комментировать
@mib
Иногда хорошо в начале функции сделать всё возможное, чтоб выполнить ретурн:
Проверить, а вдруг ошибочные данные на входе, а вдруг вобще ничего не надо делать и так далее.
И только если выполнение пробралось сквозь все ловушки - начниать логику функции.

Тоже самое касается и циклов - как можно раньше выявить все возможные break, continue, return, а само тело цикла выполнять "в крайнем случае"

Тогда код становится на много проще, меньше вложенных условий, else, else if.
Ответ написан
Комментировать
@rsi
software engineer
Почитайте книгу совершенный код, там автор несколько глав разбирал преимущества различных подходов. А так я вам скажу, что вариант вашего друга изврат, читать сложнее, ресурсов жреть больше, ошибки отлавливать сложнее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽