Пишем код

Заметки о .net разработке

Aggregation root не только в контексте БД-приложений (и граничные значения SOLID’a)

without comments

Концепции DDD, которые я начал практиковать относительно недавно, напомнили о принципе корня агрегации, который на БД-сущности очень хорошо ложится.

Однако про корни агрегации не стоит забывать и в тех модулях, которые с базой данных никак не связаны. Этот казалось бы очевидный момент несложно упустить, «слепо» следуя SOLID-принципам.

Когда я только знакомился с принципами SOLID — это выглядело как огромный спасательный круг в море legacy-кода, который меня на тот момент окружал :) Действительно, эти архитектурные принципы призывают отказаться от всемогущих god-object и тщательно разделять ответственности между многими классами, которые затем совместно использовать.
Однако в пылу «разделения ответственности» важно помнить о двух важных вещах:

  • Если ваш код превращается в набор DTO (объектов без поведения) и сервисов — подумайте еще раз! Хоть это и кажется «идеальным разделением» — поведение отдельно, данные отдельно, но удобства использования от этого значительно поубавится — рядом с объектов вам надо будет таскать и кучку сервисов.
  • При изоляции модулей очень хорошим признаком будет наличие лишь одного-двух публично-доступных классов. Таких «корней агрегации» для модуля. Таким образом повторное использование таких библиотек будет простым и понятным.
Опубликовать в Facebook
Опубликовать в Google Plus

Written by Shaddix

Сентябрь 14th, 2011 at 1:09 пп

Posted in .net,SOLID

Leave a Reply