Добрый день !
В нереально огромном проекте в одном из ДатаКонтрактов у переменной тип Стринг. А в Базе это поле представляется в виде числа.
Кто то ошибся и и за много лет зарасло мхом.
Вопрос. Как правильней будет сменить тип? Найти все места использование этой переменной просто нереал. Может правильней добавить новое поле в датаконракте и как то во всех вызовах из бд сказать чтобы туда доже добавлял результат ?
Другие языки программирования и технологии
Как правильней сменить тип переменной ?
Если это "нереально огромный проект", значит он уже давно существует и эта ситуация на его работу раньше не влияла. В чём именно проблема и почему она возникла именно сейчас? То что, тип поля не совпадает с типом переменной - это не проблема, а возможная причина проблемы. А в чём состоит сама проблема, которая вызвала этот вопрос?
1. Достаточно проверять корректность строкового значения перед его записью в базу - чтобы строка содержала запись числа. Найти все точки, а которых производится запись эту таблицу БД - куда меньшая проблема. Но вообще-то и с поиском всех точек использования переменной любая качественная IDE спокойно справится.
2. Если поле таблицы БД должно содержать не только числа (и только в этом случае!!!) - поменять тип этого поля.
P.S. Ситуация, когда структура данных в БД не совпадает со структурой данных в программе, встречается постоянно. И для того, чтобы это не превращалось в большой геморрой, в нормально организованных проектах всю работу с хранилищами данных выносят а отдельный слой репозитория.
1. Достаточно проверять корректность строкового значения перед его записью в базу - чтобы строка содержала запись числа. Найти все точки, а которых производится запись эту таблицу БД - куда меньшая проблема. Но вообще-то и с поиском всех точек использования переменной любая качественная IDE спокойно справится.
2. Если поле таблицы БД должно содержать не только числа (и только в этом случае!!!) - поменять тип этого поля.
P.S. Ситуация, когда структура данных в БД не совпадает со структурой данных в программе, встречается постоянно. И для того, чтобы это не превращалось в большой геморрой, в нормально организованных проектах всю работу с хранилищами данных выносят а отдельный слой репозитория.
Alim_59 Region
Добавлю, что достаточно переименовать проблемное поле и высыпавшиеся ошибки однозначно покажут, где оно использовалось и использовалось ли вообще ;)
Вообще Большие проекты, особбенно криво написанные... лучше не трогать....
Или писать заного...
Или писать заного...
Солнце восходит на востоке, а садится на западе. Ты, главное ничего не трогай, сынок!
Да, ошибка есть, но программа работает. И это главное.
Правильное решение (в вашем случае - найди все использования) чаще всего самое затратное по времени. Заводить дублирующее поле без отслеживания - худший из возможных вариантов. Через достаточное количество времени для одних операций БД будет использоваться одно поле, для других другое.
Резюме - ничего не трогать и, если сейчас это не вызывает ошибки, оставить всё как есть. Ну или добавить проверку, что в строке перед выгрузкой в базу будет действительно число.
Да, ошибка есть, но программа работает. И это главное.
Правильное решение (в вашем случае - найди все использования) чаще всего самое затратное по времени. Заводить дублирующее поле без отслеживания - худший из возможных вариантов. Через достаточное количество времени для одних операций БД будет использоваться одно поле, для других другое.
Резюме - ничего не трогать и, если сейчас это не вызывает ошибки, оставить всё как есть. Ну или добавить проверку, что в строке перед выгрузкой в базу будет действительно число.
В принципе можно и оставить современные языки программирования могут корректно сами разобратся с этой ситуацией
Похожие вопросы
- Вопрос по типам переменных С++ и Pascal
- С++, объект класса, экземпляр класса, какой тип переменной хранит экземпляр класса? (экземпляр это что? Word, lpstr..?)
- Помогите с программой по языку Pascal, задание на записи (комбинированный тип переменной).
- Спецификаторы типов переменных
- Определить тип переменных b: integer:
- C++. Можно сделать так, что бы тип переменной определялся сам? (Калькулятор) ...
- Как онулировать тип переменной char например был lol[3]="cok" а стал просто lol[3]?
- [C/C++] Oбъявление переменной типа структуры в этой же структуре
- C++ как переменную (signed int) разделить на старший и младший байт, а после записать в 2е другие переменные типа char?
- Напишите пожалуйста функцию обмена значений двух переменных на си (не c++) для любого типа данных