Какое у вас мнение насчет https://softwareengineering.stackexchange.com/questions/118703/where-did-the-notion-of-one-return-only-come-from
Как вы считаете, функция должна возвращать несколько значений или только одно? https://softwareengineering.stackexchange.com/questions/118703/where-did-the-notion-of-one-return-only-come-from
Ответ
Мой основной язык — это PHP. В нём никаких веских причин не использовать ранний выход нет. Поэтому, я согласен с большинством доводов в теме на SO.
Хотя чего таить, ещё лет 5 назад мой ответ был бы противоположным. Думаю, главным сдвигом в моей голове стал момент, когда я начал стремиться к одному уровню вложенности и писать код в таком стиле: https://refactoring.guru/ru/replace-nested-conditional-with-guard-clauses
А каково ваше мнение, Татьяна?
Вклинюсь как сторонник одной точки выхода из функции :).
Александр, в вашем примере множественные возвраты оправданы, потому что там функции 10 строк и логика проста.
А когда функция чуток побольше и в ветках появляется дополнительная логика - становится сложнее дебажить.
Избегание многих уровней вложенности никак не противоречит единственному return-у.
Еще в https://refactoring.guru/ru/remove-control-flag само удаление управляющего флага в циклах благодаря использованию break/continue правильно, но вступление-обоснование в статье не про циклы а про функции и return-ы (и вашу точку зрения на это =) ).
Вообщем момент спорный и требует доп. обсуждения и примеров.
> А когда функция чуток побольше и в ветках появляется дополнительная логика - становится сложнее дебажить.
Честно сказать, я бы посмотрел на такой метод, где бы всё это было оправданно. Если у вас есть примеры — присылайте, обсудим!
Сервис поддержки клиентов работает на платформе UserEcho
Мой основной язык — это PHP. В нём никаких веских причин не использовать ранний выход нет. Поэтому, я согласен с большинством доводов в теме на SO.
Хотя чего таить, ещё лет 5 назад мой ответ был бы противоположным. Думаю, главным сдвигом в моей голове стал момент, когда я начал стремиться к одному уровню вложенности и писать код в таком стиле: https://refactoring.guru/ru/replace-nested-conditional-with-guard-clauses
А каково ваше мнение, Татьяна?