Ho pensato di creare tipi personalizzati per identificatori come questo:
public enum CustomerId : int { /* intentionally empty */ }
public enum OrderId : int { }
public enum ProductId : int { }
La mia motivazione principale è di prevenire il tipo di bug in cui si passa accidentalmente un orderItemId a una funzione che si aspettava un orderItemDetailId.
Sembra che le enumerazioni funzionino perfettamente con tutto ciò che vorrei usare in una tipica applicazione Web .NET:
- Il routing MVC funziona bene
- La serializzazione JSON funziona bene
- Ogni ORM che riesco a pensare funziona bene
Quindi ora mi chiedo, "perché non dovrei farlo?" Questi sono gli unici inconvenienti a cui posso pensare:
- Potrebbe confondere altri sviluppatori
- Introduce incoerenze nel tuo sistema se hai identificatori non integrali.
- Potrebbe richiedere casting aggiuntivo, come
(CustomerId)42
. Ma non penso che questo sarà un problema, dal momento che il routing ORM e MVC tipicamente passerà direttamente i valori del tipo enum.
Quindi la mia domanda è: cosa mi manca? Questa è probabilmente una cattiva idea, ma perché?