Pull to refresh
88
1.2
Вадим Мартынов @Vadimyan

Программист

Send message
Почему не стоит использовать явно в бизнес-логике конкретную технологию доступа к данным?
Во-первых, можно создать другую реализацию IRepository и работать с другим источником. Достаточно будет реализовать репозитории, не потребуется переписывать весь код, который использовал DBContext. Скрее всего достаточно будет поправить 2 класса — RepositoryBase и RepositoryContext.
Во-вторых (сводится к п.1), можно легко замокать репозиторий и написать юнит-тест на бизнес-логику.
В-третьих, простота расширения. Из реализации на GitHub я удалил часть интерфейса IRepository, связанного с использованием автомаппинга и извлечения недоменных объектов, связанных через AutoMapper с Entity, но достаточно добавить этот код в одном месте и он станет доступен для всех сущностей.

Я согласен, что репозиторий сам по себе является спорным шаблоном, есть UoF и CQRS, но статья немного о другом.
Возможно, я слишком увлёкся технической составляющей.
  1. Уход от явного использования DBContext, который используется только в регистрации.
  2. CRUD над источником данных, сразу зарегистрированный в контейнере для любой сущности, реализующей определенный интерфейс.
  3. Возможность строить нетривиальные запросы к репозиторию, которые транслируются в IQueryable.
  4. И всё это без написания кода самих репозиториев: generic даёт достаточно функциональности.

Очень удобно для новых и особенно некрупных (до 100.000 строк) проектов, когда модель данных меняется в процессе уточнений — можно написать POCO-объект и к нему сразу появится готовый репозиторий в контейнере. Пишите только бизнес-логику, не инфраструктуру.
Да, я не указал, что звезды это еще и дешевый (бесплатный?) KPI, но на сколько он репрезентативен и стоит ли вообще при работе с программистами использовать показатели эффективности — вопрос отдельный и спорный. Любой KPI можно накрутить искусственно, есть даже личности, которые принципиально могут собирать звезды и не тратить их. В случае с нематериальными бонусами это будет эквивалентно выводу звезд из обращения и будет сдерживать инфляцию, а если начинать раздавать материальные плюшки, то может быть всякое. Не думаю, что дойдёт до продажи звезд за деньги, но мы не рисковали вводить такую систему.

Information

Rating
1,510-th
Location
Ростов-на-Дону, Ростовская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Community manager
Lead
C#
.NET Core
Database
High-loaded systems
Designing application architecture
Database design
C++
Python
SRE