Después de cuatro clases construyendo un modelo de dominio completo, llega el momento de verificar cuánto se ha consolidado cada concepto. Desde la extracción de métodos en Program.cs hasta la creación de clases, récords, validación y el patrón Factory, este checkpoint reúne cinco preguntas clave y un desafío práctico que ponen a prueba el aprendizaje real.
¿Qué conceptos fundamentales evalúa este checkpoint?
El repaso cubre los pilares del modelo de dominio construido a lo largo del módulo. Cada pregunta apunta a un concepto distinto que, en conjunto, forma la base de un código robusto en C#.
¿Qué significa la keyword void en C#?
Void indica que un método no retorna valor [0:04]. A diferencia de tipos como int, string o decimal, que sí devuelven un resultado, void simplemente ejecuta una acción sin entregar nada de vuelta. Es la primera señal que el compilador lee para entender el comportamiento de un método.
¿Por qué usar enum para valores fijos como categorías?
Cuando se tienen valores que no cambian —como categorías de productos: electrónica, ropa, entre otros— el tipo correcto es enum [0:27]. Un enum define un conjunto cerrado de opciones que el compilador valida automáticamente, lo que elimina errores por escritura incorrecta o valores inesperados.
¿Qué sucede al lanzar una excepción con throw new ArgumentException?
Escribir throw new ArgumentException() lanza una excepción y detiene el flujo del programa [0:38]. Las cláusulas de validación utilizan throw para rechazar datos inválidos antes de que contaminen el resto de la lógica. No se ignora el error, no se retorna null ni se imprime un simple mensaje: el programa se detiene hasta que el problema se resuelva.
¿Cuándo elegir record en lugar de class?
La distinción entre record y class es central en el diseño del modelo de dominio. Un record se usa para datos inmutables que no cambian una vez creados [0:53]. El ejemplo concreto es un proveedor: una vez que se registra, sus datos no deberían modificarse. En cambio, una class es más adecuada cuando los datos necesitan mutar con frecuencia.
- Record: datos que se crean una vez y permanecen iguales.
- Class: datos que pueden cambiar a lo largo del ciclo de vida del objeto.
Esta separación ayuda a que el código comunique intención con claridad.
¿Cómo centraliza Factory la creación de objetos?
El patrón Factory centraliza la creación de objetos en un solo punto [1:07]. En el proyecto, ProductFactory.Crear se encarga de la validación y la generación automática de IDs. Esto evita que la lógica de creación se disperse por todo el código.
El desafío práctico consiste en ordenar los pasos para crear un producto con Factory:
- Agregar el
using necesario para acceder a ProductFactory.
- Llamar al método
Crear.
- Usar el objeto resultante.
El orden correcto es B, C, A tal como se muestra en el video [1:17]. Primero se necesita la referencia, luego la invocación y finalmente el uso del producto creado.
El objetivo de este checkpoint no es un test formal. La verdadera prueba es que el código compile sin errores, proteja los datos con validación y utilice el patrón Factory de forma correcta [1:28]. Los recursos actualizados —incluyendo el checklist y el tercer release del repositorio— están disponibles en la sección de recursos.
Si todo compila y cada pieza encaja, el modelo de dominio está completo. ¿Cuántas preguntas acertaste en el primer intento?