2009-10-24 2 views
3

Я внедрил принципы SOLID моей команде, и они понимают и очень рады использованию принципов.Каков хороший способ показать взаимосвязь между свободно связанными классами и интерфейсами?

S - SRP - Single Responsibility Principle 
O - OCP - Open/Closed Principle 
L - LSP - Liskov Substitution Principle 
I - ISP - Interface Segregation Principle 
D - DIP - Dependency Inversion Principle 

Я дал им несколько проектов, которые уже были пересмотрены для использования этих принципов. Самая большая проблема, которую я вижу, если им нелегко видеть связи между очень слабо связанными классами внутри проекта. Даже если я создам диаграмму классов, он не будет показывать никаких соединений. В одном конкретном проекте, который я имею в виду, также используется инжекция зависимостей и XML-конфигурация для реализаций. В то время как это имеет своей целью, это еще более затрудняет выяснение того, какой класс используется.

Каков наилучший способ визуально показать отношения между классами и как они используются в проекте ?!

Отредактировано: 2008/10/24 8:40 вечера

На основе UML комментарий, я попытался обратиться к встроенной в схеме Visual Studio класса для построения модели приложения. Я могу дать описание каждого интерфейса, но все еще не уверен, что они четко связаны.

+0

Вы пробовали NDepend? –

+0

@FacioRatio Я не уверен, что NDepend будет связывать вместе классы, которые не связаны явно. (может быть не так) –

ответ

1

диаграммы UML взаимодействия может явно показать такие отношения: это требует, что ...

диаграмма классов UML может показать, как этот класс использует этот интерфейс и этот интерфейс реализован этот класс.

Теперь такие диаграммы являются «моментальными» утверждениями о конкретном выборе, сделанном для конкретного выполнения, которые могли бы иметь определенные инъекции. Таким образом, в некоторой степени, предоставляя диаграммы, которые вы удаляете от общего гибкого дизайна, который вы используете, я могу понять, что люди действительно находят такие снимки полезными.

Я стараюсь думать об аспектах дизайна в отношении интерфейсов, мне действительно не нужно понимать, «как» методы, описанные интерфейсом, на самом деле работают, понять, что делают реализации. Идея Onde заключается в том, что нам нужно принять подход Black Box к нашим зависимостям. Поэтому я бы рекомендовал поощрять людей не нуждаться в таких диаграммах, а не думать об ответственности. (это все очень хорошо, пока все не работает, тогда диагноз может потребовать больше), но подумайте: когда вы используете многие операционные системы и возможности .NET, вы действительно знаете, что происходит на самом деле? Можете ли вы принять тот же умственный подход с другими частями кода вашего приложения?

+0

Это предполагает, что я или моя команда знают, как создавать и/или понимать диаграмму UML. Если это довольно просто понять диаграмму, и инструменты свободно доступны для их создания, это может быть проблемой. –

+0

Я попытался просто объяснить интерфейсы, но они, похоже, с трудом понимают, потому что они пытаются соответствовать тому, как интерфейс работает в рамках рабочего процесса проекта. –

+0

«Рабочий процесс проекта» вы имеете в виду с точки зрения разработки кода или с точки зрения того, что происходит во время выполнения приложения? – djna

2

Я склонен думать только о интерфейсах, когда речь заходит об отношениях, поэтому я не могу помочь вам с широкими обзорами/диаграммами классов для конкретных типов. Как уже указывал кто-то, если вы хотите показать конкретные типы на диаграмме, это будет иметь значение только для моментального снимка одного конкретного прогона - он будет меняться каждый раз, когда граф объекта будет подключен по-разному.

Я думаю, что в целом более полезно выложить интерфейсы на диаграммах, а затем просмотреть базу кода, чтобы найти реализации.Один совета, который делает код просмотр намного проще:

ReSharper plugin for Visual Studio Получить и использовать следующие ссылки (если ваша каретка находится над классом/интерфейсом):

Alt + Главной - Перейти к базовому интерфейсу/

Alt + Конец - Перейти к производным/типов, реализующих интерфейс

Эти две ярлыки абсолютно необходимы для просмотра кодовой базы с большим количеством свободной связи.

+1

+1 для этих ярких ярлыков. У меня есть ReSharper, и в настоящее время я решаю, нужно ли это для команды. –

+0

Я порекомендовал его. Я сделал все возможное, чтобы превратить нашу работу в землю R #, и почти все согласны с тем, что это незаменимый инструмент. :) –

Смежные вопросы