J'ai pensé à créer des types personnalisés pour des identifiants comme celui-ci:
public enum CustomerId : int { /* intentionally empty */ }
public enum OrderId : int { }
public enum ProductId : int { }
Ma principale motivation pour cela est d'empêcher le type de bogue où vous passez accidentellement un orderItemId à une fonction qui attendait un orderItemDetailId.
Il semble que les énumérations fonctionnent parfaitement avec tout ce que je voudrais utiliser dans une application Web .NET typique:
- Le routage MVC fonctionne bien
- La sérialisation JSON fonctionne bien
- Chaque ORM auquel je peux penser fonctionne bien
Alors maintenant je me demande, "pourquoi ne devrais-je pas faire ça?" Ce sont les seuls inconvénients auxquels je peux penser:
- Cela peut confondre d'autres développeurs
- Il introduit une incohérence dans votre système si vous avez des identifiants non intégraux.
- Cela peut nécessiter un casting supplémentaire, comme
(CustomerId)42. Mais je ne pense pas que ce sera un problème, car le routage ORM et MVC vous fournira généralement des valeurs du type enum directement.
Alors ma question est, qu'est-ce que je manque? C'est probablement une mauvaise idée, mais pourquoi?