Quelles sont les directives générales ou les règles générales pour savoir quand utiliser un objet spécifique au domaine par rapport à une chaîne ou un nombre ordinaire?
Exemples:
- Classe d'âge vs Integer?
- Classe FirstName vs String?
- UniqueID vs String
- Classe PhoneNumber vs String vs Long?
- Classe DomainName vs String?
Je pense que la plupart des praticiens OOP diraient certainement des classes spécifiques pour PhoneNumber et DomainName. Plus il y a de règles sur ce qui les rend valides et comment les comparer, plus les classes simples sont faciles à manipuler et plus sûres. Mais pour les trois premiers, il y a plus de débat.
Je n'ai jamais rencontré de classe "Âge" mais on pourrait dire que cela a du sens étant donné qu'elle doit être non négative (d'accord, je sais que vous pouvez plaider pour des âges négatifs, mais c'est un bon exemple qu'il est presque équivalent à un entier primitif).
La chaîne est courante pour représenter le "prénom" mais elle n'est pas parfaite car une chaîne vide est une chaîne valide mais pas un nom valide. La comparaison serait généralement effectuée en ignorant le cas. Bien sûr, il existe des méthodes pour vérifier le vide, faire une comparaison insensible à la casse, etc., mais cela oblige le consommateur à le faire.
La réponse dépend-elle de l'environnement? Je m'intéresse principalement aux logiciels d'entreprise / à haute valeur ajoutée qui vivront et seront maintenus pendant peut-être plus d'une décennie.
Peut-être que j'y réfléchis trop, mais j'aimerais vraiment savoir si quelqu'un a des règles sur le choix de la classe par rapport à la primitive.
people may be one or two years older in Asian reckoning than in the western age system
Age
classe au lieu d'un entier lorsque vous avez besoin du comportement supplémentaire qu'une telle classe fournirait.