¿Cuáles son las pautas generales o reglas generales para cuándo usar un objeto específico de dominio frente a una cadena o número simple?
Ejemplos:
- ¿Clase de edad vs entero?
- FirstName class vs String?
- UniqueID vs String
- PhoneNumber class vs String vs Long?
- DomainName clase vs cadena?
Creo que la mayoría de los practicantes de OOP definitivamente dirían clases específicas para PhoneNumber y DomainName. Cuantas más reglas se refieran a lo que los hace válidos y cómo compararlos, las clases simples serán más fáciles y seguras de manejar. Pero para los tres primeros hay más debate.
Nunca me he encontrado con una clase de "Edad", pero uno podría argumentar que tiene sentido dado que debe ser no negativo (está bien, sé que puede argumentar por edades negativas, pero es un buen ejemplo de que es casi equivalente a un entero primitivo).
La cadena es común para representar "Nombre" pero no es perfecta porque una cadena vacía es una cadena válida pero no un nombre válido. La comparación generalmente se haría ignorando el caso. Claro que hay métodos para verificar si está vacío, hacer una comparación que no distinga entre mayúsculas y minúsculas, etc., pero requiere que el consumidor haga esto.
¿La respuesta depende del medio ambiente? Me preocupa principalmente el software empresarial / de alto valor que vivirá y se mantendrá durante posiblemente más de una década.
Tal vez estoy pensando demasiado en esto, pero realmente me gustaría saber si alguien tiene reglas sobre cuándo elegir clase versus primitivo.
people may be one or two years older in Asian reckoning than in the western age system
Age
clase en lugar de un número entero cuando necesita el comportamiento adicional que tal clase proporcionaría.