Я думав над створенням власних типів для таких ідентифікаторів:
public enum CustomerId : int { /* intentionally empty */ }
public enum OrderId : int { }
public enum ProductId : int { }
Моя основна мотивація цього - запобігати помилку, коли ви випадково передаєте orderItemId функції, яка очікувала orderItemDetailId.
Здається, що ентузіасти безперебійно працюють із усім, що я хотів би використовувати в типовому веб-додатку .NET:
- Маршрутизація MVC працює чудово
- Серіалізація JSON працює чудово
- Кожна ОРМ, яку я думаю, працює чудово
Тож зараз мені цікаво: "чому я не повинен цього робити?" Це єдині недоліки, про які я можу придумати:
- Це може заплутати інших розробників
- Це вводить невідповідність у вашій системі, якщо у вас є нецілісні ідентифікатори.
- Може знадобитися додаткове лиття, наприклад
(CustomerId)42. Але я не думаю, що це буде проблемою, оскільки маршрутизація ORM та MVC зазвичай передає вам значення типу enum безпосередньо.
Отже, моє запитання: що я пропускаю? Це, мабуть, погана ідея, але чому?