Старе (і "відповів") питання, але я підкину два центи як відповідь.
TL; DR - Вам не доведеться, але це може зробити ваш код набагато більш зрозумілим у деяких випадках.
Хоча не використовувати явне повернення може бути "способом Ruby", це заплутує програмістів, які працюють з незнайомим кодом, або незнайомих з цією функцією Ruby.
Це дещо надуманий приклад, але уявіть собі таку функцію, як ця, яка додає одне до переданого числа та призначає його змінній екземпляра.
def plus_one_to_y(x)
@y = x + 1
end
Це означало бути функцією, яка повертала значення, чи ні? Справді важко сказати, що мав на увазі розробник, оскільки він обидва призначає змінну екземпляра, а також повертає призначене значення.
Припустимо, набагато пізніше приходить інший програміст (можливо, не той, хто знайомий з тим, як Ruby повертається на основі останнього рядка коду, виконаного) і хоче ввести деякі заяви друку для ведення журналу, і функція стає цією ...
def plus_one_to_y(x)
@y = x + 1
puts "In plus_one_to_y"
end
Тепер функція порушена, якщо щось очікує поверненого значення . Якщо нічого не очікує поверненого значення, це добре. Ясна річ, якщо десь далі в ланцюзі коду щось, що викликає це, очікує повернене значення, воно вийде з ладу, оскільки не поверне те, що очікує.
Справжнє запитання зараз таке: чи дійсно щось очікував поверненої вартості? Це щось зламало чи ні? Чи це щось порушить у майбутньому? Хто знає! Лише повний огляд коду всіх дзвінків повідомить вас про це.
Так що для мене, принаймні, найкращим підходом є або бути явним, що ви щось повертаєте, якщо це має значення, або взагалі нічого не повертаєте, коли цього не відбувається.
Так, у випадку нашої малої демонстраційної функції, припускаючи, що ми хотіли, щоб вона повернула значення, було б написано так ...
def plus_one_to_y(x)
@y = x + 1
puts "In plus_one_to_y"
return @y
end
І будь-якому програмісту було б зрозуміло, що він повертає значення, і набагато важче їм зламати його, не усвідомлюючи цього.
Як варіант, можна написати це так і залишити зворотну заяву ...
def plus_one_to_y(x)
@y = x + 1
puts "In plus_one_to_y"
@y
end
Але навіщо турбуватися, залишаючи слово повернення? Чому б просто не помістити його туди і зробити 100% зрозумілим, що відбувається? Це буквально не матиме впливу на здатність вашого коду.