La validación de datos es el proceso de asegurar que un programa funcione [con] datos limpios, correctos y útiles (Wikipedia), y es muy importante para garantizar el correcto funcionamiento de nuestros programas. Las reglas o restricciones de validación se implementan mediante lógica de programación y mecanismos especiales que comprueban que los datos cumplan con los parámetros de calidad necesarios, sean válidos, razonables y seguros previo a su procesamiento.
El no validar los datos puede conducir a errores de ejecución, a operar y/o producir resultados incorrectos, a almacenar datos no fiables, o a generar fallas de seguridad. Al implementar la validación correctamente, no solo se asegura lo arriba mencionado, sino que retroalimenta al usuario con instrucciones para la correcta introducción de la data.
¿Cuándo se empieza a definir la validación? Durante la etapa de levantado de requerimientos y análisis, y en la etapa de diseño y modelado de clases o base de datos, fases en las que se deteminan las retricciones primarias según los tipos de datos a procesar y almacenar.
Para conocer más sobre la validación de datos y los métodos de validación más frecuentes, te dejo el post del sitio Ayuware, Validación de datos: qué es, en qué consiste y cómo se aplica.
Aquí están los 7 tips que te recomiendo para aplicar correctamente la validación de datos en tu código:
- Valida los datos a la Entrada, al Procesarlos y a la Salida La validación no solo debe aplicarse a los datos que se reciben como materia prima para alimentar nuestros programas, sino también a los que el programa produce y a los que deben mostrarse como salida por pantalla, imprimirse o guardarse en un archivo o base de datos. El esquema E-P-S (Entrada-Proceso-Salida) que nos enseñaron al iniciarnos en la programación sigue siendo válido.
- Valida la presencia, el tipo de dato, la longitud y/o el rango Utiliza las funciones de biblioteca de tu lenguaje de programación para comprobar los datos que el programa recibe. Para texto utiliza las que verifiquen que lo recibido no sea una cadena vacía o que cumpla con una longitud mínima o máxima; para los datos numéricos, que realmente sean dígitos, que sean del tipo correcto (entero, flotante, etc.) o que estén dentro de un rango razonable (por ejemplo, de 18 a 50 para la edad, no negativos para valores de salario básico o pago por hora, o distintos de cero si serán divisores en fórmulas). Y así para cada tipo de dato.
- Emplea ciclos para realizar la validación de cada dato Puedes usar bucles while o do-while (o su equivalente en tu lenguaje de programación). Lo importante es comprobar la calidad de la data, que sea apta para los fines de nuestro programa y que no lo hagan fallar, y no permitir avanzar mientras lo recibido no cumpla con los requisitos mínimos esperados, retroalimentando al usuario con mensajes que le orienten a la correcta digitación o el envío adecuado de dichos datos si es necesario.
- Valida los datos con formato Los números telefónicos, de seguro social, los ID de un país, direcciones web o de email, por ejemplo, tienen formatos especials que deben ser comprobados explícitamente. Puedes hacerlo mediante funciones de cadena para verificar la longitud y la presencia de los caracteres especiales que esos datos deben incluir, tales como guiones, paréntesis, signos de puntuación o letras, dentro de un ciclo. Si el dato no cumple con el formato esperado, debe informarse al usuario para su revisión o redigitación.
- Utiliza manejadores de excepciones try-catch Si tu lenguaje de programación implementa este mecanismo, vuélvete experto en su uso. La instrucción try-catch, incluida en la mayoría de los lenguajes de programación modernos, consta de un bloque de instrucciones en la parte try, seguido de una o más cláusulas catch en las que se especifica cómo manejar cada una de las distintas excepciones que puedan ocurrir en relación al dato que se intenta capturar.
- Utiliza aserciones Similar al tip anterior. Si tu lenguaje de programación implementa este mecanismo, úsalo durante el ciclo de desarrollo de tus programas. Las aserciones ayudan al programador en las tareas de diseño, desarrollo y razonamiento de un programa. Son como precondiciones que permiten comprobar o reafirmar suposiciones en tiempo de ejecución, antecediendo a la instrucciones que utilizan los valores que comprueban, o como postcondiciones que verifican resultados. Un ejemplo de aserción sería comprobar el valor del índice con que se accede a un array, a fin de validar que no está fuera del rango de casillas existentes.
- Haz un chequeo previo de los archivos de estrada Si los datos a procesar provendrán de un archivo de texto o de una base de datos (o una de sus tablas), verifica primero la existencia física de dicho archivo, y luego si éste contiene datos. Una vez realizado este prechequeo, comprueba cada componente de datos individual de cada línea, bloque o registro a medida que sean leídos usando funciones de cadena y expresiones regulares.
¿Por qué validar los datos que se generan durante la fase de de procesamiento? Porque dichos datos constituyen la información de salida, y a menudo se utilizan para la toma de decisiones. Es pues sumamente importante comprobarlos para no generar resultados inválidos, sin sentido o engañosos para el usuario. En algunos casos, éstos deberán parsearse con valores neutros como cero, espacios en blanco, un guión o un código que indique al lector su invalidez o no pertinencia.
El siguiente vídeo ejemplifica la validación usando funciones de librería: 14. Programación en C++, Validación de Entrada de Datos| Estudiante Ingeniero| Anthony Sandoval.
El siguiente vídeo ejemplifica la validación usando ciclos: Como Validar Datos en C++ Parte 1...
...y este otro enseña cómo validar entradas numéricas: Tutorial de C++ en Español # 42 - Validación de Entradas.
También puedes hacerlo mediante expresiones regulares si tu lenguaje de programación las implementa. Una expresión regular es una secuencia de caracteres que define un patrón de búsqueda sobre un texto. Proporcionan una manera muy flexible de buscar o reconocer cadenas. Aprender a manejarlas te será de gran ayuda en la validación de datos. En este link se ofrecen varios ejemplos excelentemente explicados de expresiones regulares, para iniciarte en el tema.
Al producirse una excepción, las cuales no son más que errores en tiempo de ejecución, el lenguaje de programación buscará la instrucción catch correspondiente que manejará adecuadamente esa excepción, en lugar de que el programa se detenga abruptamente, mostrando un mensaje bastante técnico al usuario, perdiéndose quizá información en el proceso o dejando archivos abiertos, dañados o en estado inconsistente, y en algunos casos hasta bloqueados los recursos del computador y con procesos sin finalizar cargados en la RAM.
En este vídeo se ejemplifica la validación usando este mecanismo: try catch C# | Fundamentos de C# | Programando en C#.
La intención de las sentencias de aserción es facilitar la depuración del programa, evitando que dicho fallo quede sin comprobar. Otra ventaja de las aserciones es que también funcionan como documentación del código.
Como ejemplo en C#, la función DivideEnteros valida que el parámetro divisor no sea cero, y conduzca a un error en tiempo de ejecución:
|
float DivideEnteros ( int dividendo , int divisor ) |
Si la entrada requerida es en sí un archivo, por ejemplo un Excel, un JPG o un archivo de otro formato, verifica primero la existencia física de dicho archivo y si tiene la extensión esperada. Puesto que el hecho de existir y tener la extensión no es suficiente para asegurar su validez, para agotar todas las posibilidades de error, verifica su formato interno. Investiga en la red cómo se hace esto en tu lenguaje de programación. Con ello cubrirás la posibilidad de procesar algo que no sea lo esperado.
Ventajas que ofrece la validación de datos
Como ves, la validación de datos es una parte esencial del procesamiento de datos y, por tanto, para mejorar el data quality de nuestra información. Llevar a cabo estos procesos beneficia enormemente a nuestros usuarios o clientes ya que garantiza contar con información coherente y precisa, lista para su uso en todo momento.
En este sentido, es importante destacar que es más efectivo y eficaz que los datos que tengamos sean correctos y cumplan con todos los requisitos necesarios al momento de su recepción, procesamiento y salida en vez de en momentos posteriores.
Espero que estos recursos te ayuden mucho en tu formación y crecimiento como programador como me ha ayudado a mí. Si sabes de otros temas que valga la pena incluir en este blog, házmelo saber. No olvides dejar tu comentario y compartir el post con quienes consideres que pueda serle útil. Si encuentras algún link roto o vídeo que no aparece, por favor avísame para corregirlo.

Comentarios
Publicar un comentario