Как мысленный эксперимент на проекте хобби, я думал о способе гарантировать, что этого вида тонкой ошибки/опечатки не происходит:
public void MyMethod(int useCaseId)
{
// Do something with the useCaseId
}
public void SomeOtherMethod()
{
int userId = 12;
int useCaseId = 15;
MyMethod(userId); // Ooops! Used the wrong value!
}
Эту ошибку было бы трудно найти, потому что нет никакой ошибки времени компиляции, и Вы не обязательно даже получили бы исключение во времени выполнения. Вы просто получили бы "неожиданные результаты".
Для разрешения этого простым способом я экспериментировал с использованием пустых перечислимых определений. Эффективно делая идентификатор пользователя типом данных (не идя вполне до класса или структуры):
public enum UseCaseId { // Empty… }
public enum UserId { // Empty… }
public void MyMethod(UseCaseId useCaseId)
{
// Do something with the useCaseId
}
public void SomeOtherMethod()
{
UserId userId = (UserId)12;
UseCaseId useCaseId = (UseCaseId)15;
MyMethod(userId); // Compile error!!
}
Что Вы думаете?