EDIT : Je reçois beaucoup de votes négatifs sur ce sujet récemment... alors j'ai pensé que je devais juste ajouter une note indiquant que cette réponse a été écrite avant que la question ne subisse sa dernière modification, où renvoyer null a été mis en évidence comme une option... ce qui semble très acceptable. Une partie de ma réponse répondait à des préoccupations comme celle d'Edwardo, dans les commentaires, qui semblait préconiser de renvoyer un 0. C'est le cas contre lequel je m'élevais.
REPONSE : Je pense qu'il y a un problème sous-jacent ici, à savoir que la division par 0 n'est pas légale. C'est une indication que quelque chose est fondamentalement faux. Si vous divisez par zéro, vous essayez de faire quelque chose qui n'a pas de sens mathématiquement, donc aucune réponse numérique que vous pouvez obtenir ne sera valide. (L'utilisation de null dans ce cas est raisonnable, car ce n'est pas une valeur qui sera utilisée dans des calculs mathématiques ultérieurs).
Edwardo pose donc la question suivante dans les commentaires : "Que se passe-t-il si l'utilisateur inscrit un 0 ?", et il estime qu'il devrait être acceptable d'obtenir un 0 en retour. Si l'utilisateur met zéro dans le montant, et que vous voulez que 0 soit retourné lorsqu'il le fait, alors vous devriez mettre un code au niveau des règles de gestion pour attraper cette valeur et retourner 0... et non pas avoir un cas spécial où la division par 0 = 0.
C'est une différence subtile, mais elle est importante... parce que la prochaine fois que quelqu'un appelle votre fonction et s'attend à ce qu'elle fasse la bonne chose, et qu'elle fait quelque chose de funky qui n'est pas mathématiquement correct, mais qui gère juste le cas particulier, elle a de bonnes chances de mordre quelqu'un plus tard. Vous n'êtes pas vraiment en train de diviser par 0... vous ne faites que renvoyer une mauvaise réponse à une mauvaise question.
Imaginez que je suis en train de coder quelque chose, et que je me plante. Je devrais lire une valeur d'échelle de mesure de radiation, mais dans un cas étrange que je n'ai pas anticipé, je lis 0. Je dépose ensuite ma valeur dans votre fonction... vous me renvoyez 0 ! Hourra, pas de radiation ! Sauf qu'il est vraiment là et que c'est juste que je passais une mauvaise valeur... mais je n'en ai aucune idée. Je veux que la division lance l'erreur parce que c'est le drapeau qui indique que quelque chose ne va pas.
8 votes
Peut-être qu'une validation des données est nécessaire.