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?