Ancienne (et la "réponse") de la question, mais je vais jeter dans mes deux cents, à titre de réponse.
Bien que n'utilisant pas un retour explicite peut être "le Rubis moyen", il est aussi source de confusion pour les programmeurs travaillant avec code inconnu, ou peu familiers avec cette fonctionnalité de Ruby.
Par exemple, on pourrait avoir un peu de fonction comme ceci, qui additionne un nombre passé, et l'affecte à une variable d'instance.
def plus_one_to_y(x)
@y = x + 1
end
Était-ce censé être une fonction qui a retourné une valeur, ou pas? Il est vraiment difficile de dire ce que signifiait le développeur, il assigne à la variable d'instance, ET renvoie la valeur affectée.
Supposons que beaucoup plus tard, un autre programmeur (peut-être pas familier avec Ruby bizarreries) arrive et veut mettre dans certains des instructions d'impression, à l'exploitation, et la fonction devient ce...
def plus_one_to_y(x)
@y = x + 1
puts "In plus_one_to_y"
end
Maintenant, la fonction est interrompue si quelque chose s'attend à une valeur de retour. Si rien ne s'attend à un retour de la valeur, c'est la fin. Clairement si, quelque part, plus loin dans le code de la chaîne, quelque chose de l'appel de cette s'attend à un retour de la valeur, c'est voué à l'échec car il n'est pas d'obtenir un numéro.
La vraie question maintenant est: est-ce a fait quelque chose de vraiment s'attendre à un retour de la valeur? A ce casser quelque chose ou pas? Il va casser quelque chose dans l'avenir? Qui sait? Seule une révision du code de tous les appels vous permettra de savoir.
Donc (pour moi au moins), la meilleure pratique est d'être très explicite sur le fait que vous êtes de retour quelque chose si il le faut, ou ne retournent rien du tout.
Ainsi, dans le cas de notre petite démo de la fonction, en supposant que nous voulions pour retourner une valeur, il devrait être écrit comme cela...
def plus_one_to_y(x)
@y = x + 1
puts "In plus_one_to_y"
return @y
end
Et il serait très clair pour tout programmeur qui retourne une valeur, et beaucoup plus difficile pour lui de rompre sans s'en rendre compte.