Sto cercando di sviluppare le mie entità in modo che non possano essere in uno stato non valido.
In particolare, sto iniziando con la mia entità cliente. Questo avrebbe campi come:
- Titolo (enum)
- FirstName (stringa)
- Cognome (stringa)
- Indirizzo (valore oggetto con altri 6 campi)
- MainTelephone (stringa)
- AlternateTelephone (string)
- EmailAddress (stringa)
Ho aggiunto metodi come ChangeOfAddress () per facilitare la modifica dell'indirizzo, che garantirà l'inserimento di un indirizzo valido in sostituzione.
Nell'interfaccia utente, considero la maggior parte dei campi (ad eccezione di AlternateTelephone e EmailAddress) come "obbligatori", incoraggiando gli utenti a completare campi come Title per rendere più facile indirizzare le mailing in futuro.
Per metodi come ChangeOfAddress () il concetto di 'stato non valido' è facile, poiché posso applicare la convalida sul nuovo oggetto valore Indirizzo, ma per la costruzione di un nuovo oggetto Cliente non sono così sicuro.
Credo che la mia domanda sia, se il minimo indispensabile per la costruzione di un'entità Cliente includa tutti i campi che ritengo siano "richiesti" dal punto di vista dell'interfaccia utente? Non riesco ad immaginare come la creazione di un cliente con solo un nome e cognome (senza dettagli di contatto), sarebbe valida nel senso commerciale in cui intendo utilizzare l'oggetto cliente. Sebbene in un certo senso FirstName e LastName sono buoni punti di partenza per una descrizione minima di un cliente e immagino che il cliente non sarebbe "non valido", sarebbe semplicemente privo di informazioni sufficienti per essere utile alle mie esigenze di business (che sarebbe, per essere in grado di contattarle).
Spero che questo abbia senso, sarei interessato a sentire qualsiasi opinione, mentre sto ancora imparando mentre vado.