EDITAR: Recientemente he recibido muchos votos negativos en esto... así que pensé en agregar una nota de que esta respuesta fue escrita antes de que la pregunta sufriera su edición más reciente, donde devolver nulo fue resaltado como una opción... lo cual parece muy aceptable. Algunos de mis comentarios fueron dirigidos a preocupaciones como las de Edwardo, en los comentarios, quien parecía estar abogando por devolver un 0. Ese es el caso contra el que estaba poniendo objeciones.
RESPUESTA: Creo que hay un problema subyacente aquí, que es que la división por 0 no es legal. Es una indicación de que algo está fundamentalmente mal. Si estás dividiendo por cero, estás tratando de hacer algo que no tiene sentido matemáticamente, por lo que ninguna respuesta numérica que obtengas será válida. (El uso de nulo en este caso es razonable, ya que no es un valor que se utilizará en cálculos matemáticos posteriores).
Entonces, Edwardo pregunta en los comentarios "¿qué pasa si el usuario ingresa un 0?", y él defiende que debería estar bien obtener un 0 a cambio. Si el usuario ingresa cero en la cantidad, y quieres que se devuelva 0 cuando hagan eso, entonces deberías añadir código a nivel de reglas de negocio para detectar ese valor y devolver 0... no tener un caso especial donde la división por 0 = 0.
Esa es una diferencia sutil, pero importante... porque la próxima vez que alguien llame a tu función y espere que haga lo correcto, si hace algo raro que no es matemáticamente correcto, pero simplemente maneja el caso particular que tiene, hay una buena probabilidad de que le cause problemas más adelante. Realmente no estás dividiendo por 0... simplemente estás devolviendo una respuesta incorrecta a una pregunta incorrecta.
Imagina que estoy codificando algo, y lo estropeo. Debería estar leyendo un valor de escala de medición de radiación, pero en un caso extraño que no anticipé, leo un 0. Luego dejo caer mi valor en tu función... ¡me devuelves un 0! ¡Hurra, no hay radiación! Excepto que realmente está ahí y es solo que pasé un valor incorrecto... pero no tengo idea. Quiero que la división lance el error porque es la señal de que algo está mal.
7 votos
Quizás es necesario realizar una validación de datos.