Conversation
.gitignore
Outdated
There was a problem hiding this comment.
Зачем добавлены эти исключения? Какие именно инструменты разработчика приводят к появлению таких файлов?
There was a problem hiding this comment.
решарпер. в связи с этим и замечанием ниже почитаю, исправлю.
|
файл _ReSharper.BuildRevisionCounter/PersistentCaches/MANIFEST-000013 |
There was a problem hiding this comment.
В части всех вызовов - это класс обертка над интерфейсом IDataProvider, за исключением метода Bumping, который мог быть и в составе интерфейса.
Почему нельзя было использовать сам интерфейс IDataProvider?
There was a problem hiding this comment.
мысль была такая:
IDataProvider - это классы, которые знают как работать с конкретным хранилищем, реализуют какие-то низкоуровневые операции. их может быть несколько.
DBStorage - обёртка, которая по строке из конфига (сейчас зашито в коде) определяет, какой именно класс использовать, из низкоуровневых операций делает более крупные, содержит какую-то дополнительную логику.
There was a problem hiding this comment.
Для укрупнения операций здесь надо использовать extension к интерфейсу. Здесь нет инкапсуляции.
There was a problem hiding this comment.
Bumping будет сильно зависить от реализации хранилища. В SQL это может быть один запрос, но мы интерфейсно принуждаем его разбивать на 2.
…ослойку, исправил своё ошибочное форматиривание - разделил функционал на два блока: "рабочий" и "тестовый" (теперь отдельные интерфейсы) - убрал класс-прослойку, часть его функционала перенёс в расширяемые методы (extension) - в проекте тестирования создание DataProvider стало по классу - теперь возможно тестировать сразу несколько классов/несколько субд - поправил своё прошлое ошибочное форматирование (студия заменяла табы на пробелы - теперь настроил её правильно) - в gitignore файлы решарпера убрал с помощью "_ReSharper*"
…я БД, рефакторинг - разделил "боевой" интерфейс на работу с ревизиями и с пользователями - разграничил доступ к методам тестирования БД (через атрибут с перечислением имён разрешенных для работу прорамм) - рефакторинг (пробелы, EnsureAdminUser, Bumping)
There was a problem hiding this comment.
Класс отвечает за разнородный функционал.
Букву I в SOLID мы уже реализовали, теперь обратим внимание на букву S
следующие правки: -разделение класса работы с БД на 2 (ревизии и пользователи) -код удаления БД перенесён в тестирующую сборку -для тестов создаётся БД со случайным именем (..._GUID), после тестов удаляется. -переименования интерфейсов
There was a problem hiding this comment.
Как результат метода зависит от его аргумента?
There was a problem hiding this comment.
аргумент для привязывания расширения к интерфейсу.
There was a problem hiding this comment.
А зачем его привязывать? Метод не возможно перегрузить при наследовании или реализовать при реализации методов интерфейса, почему просто не воспользоваться константой?
Создан слой работы с данными. В самом приложении/тестах работа только
через него. Операции, специфичные для конкретной СУБД (MongoDB) убраны в
отдельный датапровайдер. Тем самым убираем связность (Issue #29) и
готовим приложение для работы с другими БД (Issue #28)