UML Class Diagram - Это плохая практика для пересечения линий?
Это плохая практика для пересечения линий между различными классами в диаграмме UML? Это дизайнерский запах? Означает ли это, что ваши классы слишком запутаны или независимы? Это всегда / вообще неизбежно? Или я обдумываю это?
Вот моя текущая UML-диаграмма, если интересно. Вы увидите, что я проложил пару строк, чтобы не перекрывать друг друга.
3 ответа
Это плохая практика для пересечения линий между различными классами
Да, потому что это может помешать пониманию графика / диаграммы.
Это всегда / вообще неизбежно
Не все графики являются плоскими (см. Тестирование на плоскостность), поэтому иногда это неизбежно.
Но проблема не так проста, как "Я просто проложу линию вокруг". Есть много правил и рекомендаций, которые составляют хороший макет или способствуют хорошей визуальной эстетике; чтобы назвать только несколько:
- пересечение линий (на некоторых диаграммах вы могли видеть небольшой мост при пересечении линий)
- количество изгибов линии
- общая длина линии
- иерархия (обычно линии наследования должны быть нарисованы вверх)
Вы уже можете видеть, что некоторые правила конкурируют; так что верстка - это всегда баланс. Если вас интересует более подробная информация, я предлагаю поискать "эстетику графика" или "автоматическое (графическое) размещение".
К сожалению, большинство моих исследовательских работ находятся за платным доступом, поэтому я не могу ссылаться на PDF-файлы, но некоторые из них могут быть в Google; например, UML Diagram Layouting: современное состояние или эстетика диаграмм классов
На мой взгляд, пересечения линий могут быть неизбежны, но часто это происходит, когда я пытаюсь показать слишком много вещей на одной диаграмме. Я вижу это как "коммуникационный" запах, а не как дизайнерский запах.
Я часто обнаруживал, что явное написание вопроса, на который я пытаюсь ответить, помогает определить элементы модели, которые не являются строго необходимыми, и которые я должен пропустить. Кроме того, несколько диаграмм могут лучше передать идею / дизайн, чем одна насыщенная.
В вашем примере вы можете разбить диаграмму, следуя цветным областям, которые вы уже определили.
Когда есть пересечения, самое время остановиться и подумать, не слишком ли сложная диаграмма.
Я чувствую, что ваша диаграмма пытается быть абстрактной и конкретной одновременно. Я считаю это слишком сложным. Он является абстрактным в том смысле, что он предоставляет обзор архитектуры, и конкретным в том смысле, что он показывает структурные детали, связанные с реализацией.
Лично я мог бы разбить вашу диаграмму на диаграмму компонентов; затем выразите структуру каждого компонента, используя отдельные диаграммы классов.