Несколько предложений:
Убедитесь, что ваш источник данных скрыт за абстракцией. Например, интерфейс типа IProductRepository
, содержащий только те методы, с которыми вам нужно взаимодействовать. Этот интерфейс никоим образом не должен указывать на то, что является базовой реализацией.
Таким образом, ваш выбор не будет «просачиваться» в другие части вашего кода. Вы сможете изменить свое мнение, не изменяя все. Во-вторых, когда вы попытаетесь создать другую реализацию, вы сразу увидите, какие методы она должна поддерживать.
Вот несколько причин не для непосредственного использования Excel в качестве источника данных, а для определения собственной базы данных:
- Если файлы Excel не предназначены для этой цели, они могут непредсказуемо измениться, и тогда ваше приложение не будет работать. (Или, что еще хуже, он «работает», но использует неправильные столбцы или листы, и данные выглядят одинаково, и никто не замечает какое-то время.) Если вы импортируете файлы Excel в базу данных, и формат файла изменится, он все равно создаст работать, но эта работа будет в точке, где вы импортируете данные, а не в остальной части вашего приложения. Вы храните «изменчивые» вещи, которые могут отличаться от других частей вашего кода.
- Правдоподобный, распространенный сценарий состоит в том, что позже вам также потребуется включить данные из другого источника. Если ваше приложение читает Excel, то теперь вы должны выяснить, как получить данные откуда-то еще в книгу Excel. Это выполнимо, но совсем не весело. Гораздо проще, если вы читаете из базы данных, а Excel - это только один из способов получения данных. Тогда гораздо проще включить данные из других источников.
Они оба отражают идею о том, что наше приложение должно иметь больший контроль над вещами, от которых оно зависит. Когда вы определяете интерфейс репозитория, ваше приложение говорит, что, какой бы ни была реализация, оно должно соответствовать этому. Создание вашей собственной базы данных является продолжением этого принципа. Вы контролируете хранилище данных, и все, что помещает в него данные, должно соответствовать ему. Вы не можете контролировать то, что не можете контролировать, но вы толкаете его дальше от частей, которые вы делаете , чтобы ограничить требуемую работу в случае ее изменения.