Scrivo spesso codice che traduce le entità nel database in oggetti del dominio. Queste entità hanno spesso campi che sono vincolati e tradotti in enumerazioni negli oggetti del dominio. In alcuni casi, tuttavia, i campi possono essere nulli.
Ad esempio, immagina di avere un'entità PrintJob
con un campo Status
che può essere New
, Submitted
o Completed
e un campo Result
che può essere Succeeded
, FailedNoPaper
o FailedNoToner
ma può anche essere NULL
se Status
non è Completed
.
Da un lato, mi piace avere una mappatura uno-a-uno dei valori del campo entità ai valori enum dell'oggetto dominio, ma d'altra parte, in qualche modo sembra "migliore" avere sempre valori per le proprietà con tipi di enumerazione.
La mia domanda è: è meglio rappresentare il valore del campo Result
nel mio oggetto dominio come valore nullable (ad esempio MyStatus?
in C # o VB.NET) che non ha alcun valore quando il campo entità corrispondente è NULL
, o dovrei creare un valore enum speciale insieme agli altri, ad es NoValue
o Undefined
?