¿Dónde está el mejor lugar para validar los parámetros de entrada de la función: en la persona que llama o en la función misma?
Como me gustaría mejorar mi estilo de codificación, trato de encontrar las mejores prácticas o algunas reglas para este problema. Cuando y que es mejor.
En mis proyectos anteriores, solíamos verificar y tratar cada parámetro de entrada dentro de la función (por ejemplo, si no es nulo). Ahora, he leído aquí en algunas respuestas y también en el libro Pragmatic Programmer, que la validación del parámetro de entrada es responsabilidad de quien llama.
Esto significa que debo validar los parámetros de entrada antes de llamar a la función. En todas partes se llama a la función. Y eso plantea una pregunta: ¿no crea una duplicación de la condición de verificación en todas partes donde se llama la función?
No estoy interesado solo en condiciones nulas, sino en la validación de cualquier variable de entrada (valor negativo para sqrt
funcionar, dividir por cero, combinación incorrecta de estado y código postal, o cualquier otra cosa)
¿Hay algunas reglas sobre cómo decidir dónde verificar la condición de entrada?
Estoy pensando en algunos argumentos:
- cuando el tratamiento de una variable no válida puede variar, es bueno validarlo en el lado de la persona que llama (por ejemplo, la
sqrt()
función; en algunos casos, es posible que desee trabajar con un número complejo, por lo que trato la condición en la persona que llama) - Cuando la condición de verificación es la misma en todas las personas que llaman, es mejor verificarla dentro de la función, para evitar duplicaciones
- La validación del parámetro de entrada en la persona que llama tiene lugar solo una antes de llamar a muchas funciones con este parámetro. Por lo tanto, la validación de un parámetro en cada función no es efectiva
- la solución correcta depende del caso particular
Espero que esta pregunta no sea un duplicado de ninguna otra, busqué este problema y encontré preguntas similares, pero no mencionan exactamente este caso.