Quali sono le linee guida generali o le regole empiriche per quando usare un oggetto specifico del dominio contro una semplice stringa o un numero?
Esempi:
- Classe di età vs intero?
- Classe FirstName vs String?
- UniqueID vs String
- PhoneNumber class vs String vs Long?
- Classe DomainName vs String?
Penso che la maggior parte dei professionisti di OOP direbbe sicuramente classi specifiche per PhoneNumber e DomainName. Più regole su ciò che li rende validi e su come confrontarli rendono le classi semplici più facili e sicure da affrontare. Ma per i primi tre c'è più dibattito.
Non mi sono mai imbattuto in una classe "Età" ma si potrebbe obiettare che abbia senso dato che deve essere non negativo (okay so che si può discutere per età negative ma è un buon esempio che è quasi equivalente a un intero primitivo).
String è comune per rappresentare "Nome" ma non è perfetto perché una stringa vuota è una stringa valida ma non un nome valido. Il confronto sarebbe di solito fatto ignorando il caso. Sicuramente ci sono metodi per verificare la presenza di vuoti, fare confronti senza distinzione tra maiuscole e minuscole, ecc. Ma richiede che il consumatore lo faccia.
La risposta dipende dall'ambiente? Mi occupo principalmente di software aziendale / di alto valore che vivrà e sarà mantenuto per forse più di un decennio.
Forse sto pensando troppo a questo, ma mi piacerebbe davvero sapere se qualcuno ha delle regole su quando scegliere la classe rispetto alla primitiva.
people may be one or two years older in Asian reckoning than in the western age system
Age
classe anziché un numero intero quando è necessario il comportamento aggiuntivo che tale classe fornirebbe.