У нас много кода, который передает около « Ids » строк данных;в основном это целые или направляющие.Я мог бы сделать этот код более безопасным, создав другую структуру для идентификатора каждой таблицы базы данных. Тогда средство проверки типов поможет найти случаи, когда передан неправильный идентификатор.
Например, в таблице Person есть столбец, который вызывает PersonId, и у нас есть такой код:
DeletePerson(int personId)
DeleteCar(int carId)
Было бы лучше иметь:
struct PersonId
{
private int id;
// GetHashCode etc....
}
DeletePerson(PersionId persionId)
DeleteCar(CarId carId)
Кто-нибудь получил реальный жизненный опыт этого донга?
Стоит линакладные расходы?
Или больше боли, чем стоит?
(Это также упростит изменение типа данных в базе данныхпервичный ключ, именно так я и думал об этом идеале, во-первых)
Пожалуйста, не говорите, используйте ORM какое-то другое большое изменение в дизайне системы, так как я знаю, что ORM будетлучший вариант, но это не в моей власти в настоящее время.Однако я могу внести незначительные изменения, например, в модуль, над которым я работаю в настоящее время.
Обновление: Обратите внимание, что это не веб-приложение, а идентификаторы хранятся в памяти и передаютсяс WCF, поэтому нет преобразования в / из строк на краю.Нет никаких причин, по которым интерфейс WCF не может использовать тип PersonId и т. Д. Тип PersonsId и т. Д. Может даже использоваться в коде пользовательского интерфейса WPF / Winforms.
Единственный по своей природе "нетипизированный" бит системы - это база данных.
Это, кажется, сводится к затратам / выгодам тратить время на написание кода, который компилятор может проверить лучше, или тратить время на написание большего количества юнит-тестов.Я больше склоняюсь к тому, чтобы тратить время на тестирование, так как я хотел бы видеть хотя бы некоторые модульные тесты в базе кода.