Lección 8: Value Objects y records
Cuando un precio es solo un decimal y una moneda es solo un string, nada impide sumar shékels con dólares o mutar un importe a mitad de un cálculo. En esta lección construimos value objects con records de C# — valores inmutables comparados por valor — para que esos errores se bloqueen en compilación
Un value object es como un billete de 20: no importa qué billete exacto recibiste — solo cuenta el valor. Y un billete no se "edita" — solo se reemplaza por otro.
- Objeto de valor (Value Object)
- Un valor definido solo por sus datos — dos precios de 10 ILS son el mismo valor, sin identidad separada. Siempre inmutable.
- tipo record
- Un tipo de C# donde el compilador genera de una declaración la igualdad por valor (Equals/==), propiedades init, un constructor y ToString.
- inmutabilidad
- El estado del objeto no cambia tras la creación. Un "cambio" se hace con with — una copia nueva con el valor actualizado, el original intacto.