De vez en cuando me encuentro con métodos en los que un desarrollador elige devolver algo que no es crítico para la función. Quiero decir, cuando veo el código, aparentemente funciona igual de bien que, void
y después de un momento de reflexión, pregunto "¿Por qué?" ¿Te suena familiar?
A veces estoy de acuerdo en que la mayoría de las veces es mejor devolver algo como a bool
o int
, en lugar de simplemente hacer un void
. Sin embargo, no estoy seguro, en general, sobre los pros y los contras.
Dependiendo de la situación, devolver un mensaje int
puede hacer que la persona que llama sepa la cantidad de filas u objetos afectados por el método (por ejemplo, 5 registros guardados en MSSQL). Si un método como "InsertSomething" devuelve un valor booleano, puedo tener el método diseñado para devolverlo true
si tiene éxito, de lo contrario false
. La persona que llama puede elegir actuar o no con esa información.
Por otra parte,
- ¿Puede conducir a un propósito menos claro de una llamada al método? La codificación incorrecta a menudo me obliga a verificar el contenido del método. Si devuelve algo, le dice que el método es del tipo que tiene que hacer algo con el resultado devuelto.
- Otro problema sería, si la implementación del método es desconocida para usted, ¿qué decidió devolver el desarrollador que no es una función crítica? Por supuesto que puedes comentarlo.
- El valor de retorno debe procesarse, cuando el procesamiento podría finalizar en el paréntesis de cierre del método.
- ¿Qué pasa debajo del capó? ¿Se obtuvo el método llamado
false
debido a un error arrojado? ¿O devolvió falso debido al resultado evaluado?
¿Cuales son tus experiencias con esto? ¿Cómo actuarías en esto?
void
al menos le permite al desarrollador saber que el valor de retorno del método es intrascendente; realiza una acción, en lugar de calcular un valor.