N Зависимые метрики от сборок
Стараетесь ли вы держать расстояние от главной последовательности низким для каждой сборки? А как насчет сборок, которые содержат только определения бизнес-объектов? Можно ли держать их подальше от зоны боли? Типы в таких сборках обычно используются другими сборками и являются довольно конкретными. Как справиться с такой ситуацией?
1 ответ
Я считаю, что цель {держать "расстояние от главной последовательности" на низком уровне] основана на Законе Деметры. Следование этому правилу помогает сделать ваш код легче для понимания и облегчить модульное тестирование. Используя бизнес-объекты, которые являются простыми контейнерами данных, вы выставляете больше состояния, чем может быть необходимо, и нарушаете правила инкапсуляции.
Однако, как отмечает Фаулер в этой статье: "Хотя цепочки методов - это запах, противоположная проблема объектов среднего размера, раздутых с помощью методов переадресации, - это тоже запах" (я всегда чувствовал, что мне будет более комфортно с Законом Деметра, если бы это называлось Предложением Деметры.)"
Я думаю, что ценность таких базовых бизнес-объектов может быть полезна, если вы хотите передать только "что" содержится в объекте, например, как они используются в качестве объектов передачи данных. Однако, вероятно, важно отделить ваши настоящие бизнес-объекты от ваших пустых объектов передачи данных. Я бы предположил, что реальные бизнес-объекты должны также содержать поведение вместе с данными, которые они инкапсулируют.