Contenido del curso
Entendiendo las partes de la programación funcional
- 2

Funciones en Programación Funcional: Conceptos Básicos
03:15 min - 3

Funciones como Ciudadanos de Primera Clase en Programación
02:39 min - 4

Funciones Puras: Concepto y Ejemplos Prácticos
04:05 min - 5

Efectos Secundarios en Programación y su Impacto en el Código
03:12 min - 6

Funciones de Orden Superior en Programación
02:28 min - 7

Funciones Lambda en Programación Funcional Java
03:30 min - 8

Inmutabilidad de Datos en Programación Funcional con Java
11:16 min
Functional Programming en Java
- 9

Programación Funcional en Java SE: Conceptos y Prácticas
00:06 min - 10

Programación Funcional en Java: Práctica y Ejemplos en IntelliJ
02:48 min - 11

Programación Funcional en Java: Creación y Uso de Funciones
04:03 min - 12

Programación Funcional con Predicados en Java
04:57 min - 13

Interfaz Consumer y Supplier en Java: Uso y Ejemplos Prácticos
03:54 min - 14

Funciones Java para Transformación de Datos y Operaciones Binarias
07:10 min - 15

Creación y Uso de Interfaces Funcionales Personalizadas en Java
08:51 min - 16

Métodos de Referencia en Programación Funcional Java
04:46 min - 17

Inferencia de tipos en Java: funciones y métodos
03:53 min - 18

Uso de Expresiones Lambda en Java: Sintaxis y Aplicaciones
12:46 min - 19

Interfaz Funcional en Java: Creación y Uso de Métodos Default
04:59 min - 20

Encadenamiento de Llamadas en Programación Orientada a Objetos
03:52 min - 21

Composición de Funciones en Programación Funcional
06:06 min
Optional y Streams: Datos mas interesantes
- 22

Uso de la Clase Optional en Java para Manejo de Valores Nulos
12:59 min - 23

Manipulación de Streams en Java: Operaciones y Limitaciones
10:18 min - 24

Programación Funcional en Java: Uso de Streams y Operaciones Terminales
07:21 min - 25

Operaciones de Stream en Java: Intermedias y Finales
05:05 min - 26

Operaciones y Concurrente con Stream en Java
05:51 min - 27

Operaciones Terminales en Java Streams
06:18 min - 28

Operaciones Intermedias en Streams de Java
09:21 min - 29

Conversión de Strings a Listas de Enteros en Java
06:14 min
Todo junto: Proyecto Job-search
- 30

Construcción de Proyecto para Buscar Empleo Usando APIs
01:17 min - 31

Configuración y Uso de Gradle en Proyectos Java con IntelliJ
03:23 min - 32

Creación de una Herramienta de Búsqueda de Trabajo en Terminal
01:51 min - 33

Creación de Puntos de Entrada y Dependencias en Proyectos Java
05:53 min - 34

Creación de APIs RESTful con Feign y Spring Boot
09:30 min - 35

Creación de una Interfaz de Línea de Comandos con JCommander
13:05 min - 36

Validación de Argumentos en Terminal con Clases en Ciel
Viendo ahora - 37

Procesamiento de Argumentos y Solicitudes API en Java
11:38 min - 38

Creación de API para búsqueda de empleos con Java y CLI
08:31 min
Conclusiones
Validación de Argumentos en Terminal con Clases en Ciel
Resumen
Cuando una aplicación de línea de comandos recibe parámetros, no basta con leerlos: hay que asegurarse de que sean correctos. En este paso se construyen dos validadores usando la interfaz IParameterValidator de JCommander, lo que permite interceptar valores inválidos antes de que el programa continúe su ejecución.
¿Cómo funciona IParameterValidator en JCommander?
JCommander ofrece la interfaz IParameterValidator para definir reglas de validación sobre cada argumento que llega por terminal. Esta interfaz exige implementar un único método: validate, que recibe el nombre de la opción y el valor que el usuario proporcionó. Si el valor no cumple con las reglas, se lanza una excepción que interrumpe el flujo del programa.
Este patrón es útil porque centraliza la lógica de validación en clases independientes, manteniendo el código limpio y reutilizable.
¿Cómo crear un validador para la opción de ayuda?
El primer validador se llama CLIHelpValidator [01:06]. Su propósito es detectar cuándo el usuario solicita ayuda y evitar que esa petición se procese como una opción más del programa.
¿Qué lógica aplica CLIHelpValidator?
- Implementa
IParameterValidatory su métodovalidate. - Convierte el valor recibido a boolean usando
Boolean.parseBoolean(value)[02:00]. - Si el valor es
true, lanza una excepción con el mensaje "ayuda solicitada" [02:38]. - Esa excepción actúa como un cortocircuito que interrumpe el proceso normal.
java public class CLIHelpValidator implements IParameterValidator { @Override public void validate(String name, String value) throws ParameterException { boolean actual = Boolean.parseBoolean(value); if (actual) { throw new ParameterException("Ayuda solicitada"); } } }
Para conectar este validador con el argumento de ayuda en la clase CLIArguments, se usa la anotación validateWith apuntando a CLIHelpValidator.class [03:00].
¿Cómo se genera código rápidamente en IntelliJ?
Un atajo práctico es usar el menú contextual Generate dentro de IntelliJ. Al seleccionar Implement methods, el IDE escribe automáticamente la firma del método validate, ahorrando tiempo y evitando errores de escritura [01:38].
¿Cómo validar que una palabra clave sea correcta?
El segundo validador es CLIKeywordValidator [03:18]. Su objetivo es garantizar que el criterio de búsqueda contenga únicamente letras y números, descartando espacios vacíos, caracteres especiales u otros valores inesperados.
¿Qué expresión regular se utiliza?
- La clase también implementa
IParameterValidator. - Aplica una expresión regular que verifica que el valor comience con letras y contenga solo caracteres alfanuméricos [03:56].
- Si el valor no coincide con el patrón, imprime un mensaje indicando que "el criterio de búsqueda no es válido" y lanza una excepción [04:28].
java public class CLIKeywordValidator implements IParameterValidator { @Override public void validate(String name, String value) throws ParameterException { if (!value.matches("^[a-zA-Z][a-zA-Z0-9]*$")) { System.out.println("El criterio de búsqueda no es válido"); throw new ParameterException("El criterio de búsqueda no es válido"); } } }
Finalmente, se asocia al parámetro keyword en CLIArguments usando validateWith = CLIKeywordValidator.class [04:54].
Este enfoque basado en clases validadoras independientes permite escalar fácilmente: si mañana necesitas una nueva regla, solo creas otra clase que implemente IParameterValidator y la conectas con validateWith. Así el código principal permanece legible y cada responsabilidad queda aislada.
¿Has implementado validadores personalizados con JCommander o prefieres otra estrategia? Comparte tu experiencia.