Поделиться через


Стабилизация структуры приложения с помощью схем слоев

Если команда разработчиков создает код небольшими сегментами, они часто изменяют и расширяют код. Такие изменения могут привести к возрастающей сложности зависимостей, и со временем вносить изменения в код станет затруднительно. Чтобы предотвратить эту проблему, при разработке и проверке зависимостей между компонентами приложения можно использовать схемы слоев.

С помощью схемы слоев команда разработчиков может просматривать основные составляющие приложения и зависимости между ними (без подробных сведений о работе и взаимодействии этих компонентов).

С помощью схем слоев разработчики также могут обеспечивать соответствие кода архитектуре. При составлении схемы слоев в Visual Studio каждому слою можно назначить группы классов, используемых в коде, и указать зависимости с помощью стрелок. Затем с помощью Visual Studio можно проверить, соответствуют ли стрелки в схеме фактическим зависимостям в коде.

Чтобы будущие изменения всегда соответствовали архитектуре, команда разработчиков может определить политику возврата для проверки соответствия схеме слоев и использовать ее в построениях.

Внедрение проверки слоев

Внедрить использование проверки слоев командой разработчиков можно согласно процедурам, описанным в этом разделе.

Использование проверки слоев при написании нового кода

  1. Начиная писать код для приложения, составьте схему слоев, представляющую его основные компоненты и зависимости между ними. Скорее всего, ее придется изменять по мере разработки приложения.

    Дополнительные сведения см. в разделе Схемы слоев: справочные материалы.

  2. При создании пространств имен или классов назначайте их определенным слоям.

  3. Перед возвратом кода щелкните схему слоев правой кнопкой мыши и выберите Проверить архитектуру.

  4. Добавьте проверку слоев в процедуры возврата кода и обычного построения.

    Дополнительные сведения см. в разделе Практическое руководство. Проверка кода .NET по схеме слоев.

Внедрение проверки слоев при обновлении существующего приложения

  1. Используйте обозреватель архитектуры и направленные графы для изучения структуры приложения. Следующие действия помогут лучше ознакомиться с этой структурой.

  2. Опишите, какими должны быть основные компоненты и зависимости между ними. Дополнительные сведения см. в разделе Практическое руководство. Создание схем слоев из артефактов.

  3. Назначьте элементы слоям, перетащив их из обозревателя архитектуры или обозревателя решений.

  4. Щелкните схему слоев правой кнопкой мыши и выберите пункт Проверить архитектуру.

  5. Проверьте отчеты об ошибках, если они имеются, и исправьте ошибки, пользуясь следующими подходами.

    • Исправьте схему слоев. Внесите в нее изменения так, чтобы она более точно представляла существующий код, или переназначьте элементы кода другим слоям.

    • Исправьте код. Если вы считаете, что проект, показанный на схеме слоев, более удачен, чем существующий код, можно изменить код так, чтобы он соответствовал схеме.

      Дополнительные сведения см. в подразделе Рефакторинг существующего кода для соответствия схеме слоев далее в данном разделе.

  6. Повторяйте указанные выше действия до устранения всех ошибок в отчете.

  7. Добавьте проверку слоев в процедуры возврата кода и обычного построения.

    Дополнительные сведения см. в разделе Практическое руководство. Проверка кода .NET по схеме слоев.

Рефакторинг существующего кода для соответствия схеме слоев

Когда команда разработчиков начинает работать над существующим приложением, может обнаружиться, что его структура стала намного сложнее, чем ранее. Это становится очевидно при составлении схемы слоев и назначении элементов слоям. Возможно, команда не сможет назначить элементы слоям так, чтобы проверка выполнялась успешно, не внедряя слои и зависимости, необходимость которых не обоснована логически, или зависимости, пропускающие слои или формирующие циклы. Такие недостатки затрудняют понимание и редактирование кода и могут привести к тому, что поведение кода покажется пользователям нестабильным.

Команда разработчиков может упростить работу с кодом, выполнив рефакторинг кода для улучшения его архитектуры. Если команда приняла решение о таком рефакторинге, необходимо помнить о следующем.

  • Изменения в рамках рефакторинга должны быть отдельны от других изменений. Изменения в рамках рефакторинга не должны приводить к существенным изменениям функциональных возможностей, заметным для пользователей.

  • Добавляйте все предлагаемые изменения в список планируемых работ над продуктом, указывая описания самих изменений и улучшений, на которые они направлены.

    Примечание

    Изменения в рамках рефакторинга, которые можно реализовать и протестировать в течение нескольких часов, можно обрабатывать согласно процедурам, предусмотренным для ошибок.Более масштабные изменения в рамках рефакторинга следует добавлять в список планируемых работ над продуктом и выполнять для них оценку требуемого времени и выставление приоритетов вместе с другими элементами в этом списке.

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

Изменение модели слоев

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

Если необходимо внести изменения в модель слоев, рассмотрите предложенные изменения вместе с командой.

Многие изменения модели слоев подпадают под следующие категории.

  • Расширение. Добавление новых элементов в код, в соответствии с которыми требуется добавить новые слои.

  • Доработка. Одному слою назначено множество элементов кода, и требуется повысить эффективность проверки слоев, разделив один слой на несколько небольших.

  • Рефакторинг. Требуется улучшить структуру зависимостей в существующем коде. Существующие структуры отражены в текущих схемах слоев. Таким образом, необходимо одновременно доработать и код, и схему слоев.

Связанные разделы