2010-06-18 9 views
3

Прямо сейчас у меня есть код, который создает базу данных (всего несколько запросов CREATE в базе данных SQLite) в моем классе доступа к основной базе данных. Это кажется ненужным, поскольку я не собираюсь использовать код. Я просто нуждался бы в этом, если что-то пошло не так, и мне нужно было воссоздать базу данных. Должен ли я ...YAGNI и скрипты создания базы данных

  1. Оставьте вещи такими, какие они есть, хотя код создания базы данных составляет около четверти моего размера файла.
  2. Переместить код создания базы данных в отдельный скрипт. Скорее всего, я буду запускать его вручную, если мне когда-нибудь понадобится запустить его снова, и это поставит его вне поля зрения во время работы над основным кодом.
  3. Удалите код создания базы данных и полагайтесь на контроль версий, если мне когда-либо понадобится его снова.
+0

Я думаю, что в этом случае YAGNI = вы * ARE * понадобится! – Benjol

ответ

3

Я думаю, что лучше всего сохранить код. Что еще более важно, вы должны поддерживать этот код (или генерировать его) каждый раз при изменении схемы базы данных.

Это важно по следующим причинам.

  1. Возможно, вы будете удивлены, сколько раз вам это нужно. Если вам нужно перенести сервер или настроить другую среду (например, TEST или DEMO) и т. Д.
  2. Я также обнаружил, что я часто ссылаюсь на DDL SQL при кодировании, особенно если я не коснулся системы некоторое время.
  3. У вас есть ссылки на решения, которые вы сделали, например, индексы, которые вы создали, уникальные ключи, и т.д. и т.п.

Если вы не дисциплинированный подход к этому, я обнаружил, что схема базы данных могут со временем меняться, когда будут сделаны специальные изменения, и это может вызвать неясные проблемы, которые не обнаружены до тех пор, пока вы не попадете в базу данных. Хуже того, без дисциплинированного подхода (т. Е. Ссылочного определения схемы) вы можете обнаружить, что разные базы данных имеют тонко различную схему.

3

мне просто нужно было бы, если бы что-то пошло не так, и мне нужно обновить базу данных .

Воспроизведение базы данных абсолютно не является исключительным случаем. Этот код является частью процесса развертывания в новой/другой системе и представляет структуру базы данных, с которой ваш код будет работать. Вы должны иметь интеграционные тесты, подтверждающие это. Работа неограниченно с одним сервером БД, схема которого была создана поэтапно с помощью вручную отправленных SQL-заявлений во время разработки, не, на что вы должны положиться.

Но да, он должен быть отделен от кода доступа; поэтому вариант 2 правильный. Затем отдельный сценарий можно использовать как для тестирования, так и для развертывания.