NDepend метрики для сборок
-
12-09-2019 - |
Вопрос
Пытаетесь ли вы сохранить Расстояние от главной последовательности низкий уровень для каждой сборки?Как насчет сборок, содержащих только определения бизнес-объектов?Возможно ли держать их подальше от Зона боли?Типы в таких сборках обычно используются другими сборками и довольно конкретны.Как справиться с такой ситуацией?
Решение
Я полагаю, что цель {поддержания "расстояния от основной последовательности" на низком уровне} основана на Закон Деметры.Следование этому правилу помогает сделать ваш код более понятным и удобным для модульного тестирования.Используя бизнес-объекты, которые являются простыми контейнерами данных, вы раскрываете больше состояний, чем может быть необходимо, и нарушаете правила инкапсуляции.
Однако, как Фаулер указывает в этой статье, "В то время как цепочки методов - это запах, противоположная проблема объектов посредников, раздутых методами пересылки, - это тоже запах.(Я всегда чувствовал, что мне было бы более комфортно с Законом Деметры, если бы он назывался Внушением Деметры.)"
Я думаю, что ценность таких базовых бизнес-объектов может быть полезна, если вы хотите передать только то, "что" содержит объект, например, как они используются в качестве объектов передачи данных.Однако, вероятно, важно отличать ваши настоящие бизнес-объекты от ваших пустых объектов передачи данных.Я бы предположил, что реальные бизнес-объекты также должны содержать поведение наряду с данными, которые они инкапсулируют.