0
Answered

Какое у вас мнение насчет https://softwareengineering.stackexchange.com/questions/118703/where-did-the-notion-of-one-return-only-come-from

Tatyana Durova 7 years ago updated by anonymous 6 years ago 4

Как вы считаете, функция должна возвращать несколько значений или только одно? https://softwareengineering.stackexchange.com/questions/118703/where-did-the-notion-of-one-return-only-come-from

Answer

Answer

Мой основной язык — это PHP. В нём никаких веских причин не использовать ранний выход нет. Поэтому, я согласен с большинством доводов в теме на SO.


Хотя чего таить, ещё лет 5 назад мой ответ был бы противоположным. Думаю, главным сдвигом в моей голове стал момент, когда я начал стремиться к одному уровню вложенности и писать код в таком стиле: https://refactoring.guru/ru/replace-nested-conditional-with-guard-clauses


А каково ваше мнение, Татьяна?

Answer

Мой основной язык — это 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-ы (и вашу точку зрения на это =) ).

Вообщем момент спорный и требует доп. обсуждения и примеров.

> А когда функция чуток побольше и в ветках появляется дополнительная логика - становится сложнее дебажить. 

Честно сказать, я бы посмотрел на такой метод, где бы всё это было оправданно. Если у вас есть примеры — присылайте, обсудим!