13
As true as steel to your desire You come with just an idea - we make great software for you! Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов Visual Studio SDK Павел Воронов 2014-12-12

Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

  • Upload
    gosharp

  • View
    268

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

As true as steel to your desire

You come with just an idea -

we make great software for you!

Повышение эффективности командной разработки и поддерживаемости кода

за счет использования компонентов Visual Studio SDK

Павел Воронов 2014-12-12

Page 2: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

© Copyright JSC “Arcadia, Inc.”

Зачем генерировать код?

• Повышение производительности труда разработчика

• Стандартизация подходов в программировании

• Упрощение поддержки кода

• Уменьшение затрат времени на обучение, поддержку и реализацию решений

• Намного проще следовать стандарту, если он «зашит» в инструменте

• Технический контроль над процессом разработки

2

Почему недостаточно готовых решений?

• У всех свои вкусы, а иногда и лицензии! Кто-то пользуется Visual Assist, кто-то ReSharper…

• Опять же, инструменты надо настроить под свои нужды

• Нет полного контроля над функциональностью

• Его надо купить и получить зависимость процесса разработки еще от одного коммерческого продукта

Page 3: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

© Copyright JSC “Arcadia, Inc.”

Главный залог успеха проекта

В случае разногласий – это зафиксированные стандарты.

Они могут служить точкой отсчета в контрактных взаимоотношениях с заказчиком.

Как результат – лучшее взаимопонимание!

3

Page 4: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

© Copyright JSC “Arcadia, Inc.”

Как генерируется код в Visual Studio

5

Вручную

Tемплейты

T4 templates

DevArt T4 editor

Scaffolding

Custom Sсaffolders

T4 Custom Utility Methods

Сниппеты

Snippetizer

Visual Studio SDK based

Built in Visual Studio

Visual Studio SDK

Page 5: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

© Copyright JSC “Arcadia, Inc.”

Как автоматизировать написание кода?

• Машины для человека – не наоборот!

• Исследовать поведение разработчиков, собрать статистику

• Сначала позаботьтесь о мелочах. О том, что разработчики делают в последнюю очередь (или забывают делать). Копирайт в библиотеке, и прочее…

• Убедиться что для конфигурирования расширений не требуется существенных усилий и они легко доступны

• Лучше 10 раз упомянуть одно и тоже в комментариях, чем плохо донести до пользователя

• Наладить обратную связь и поддержку

• Возможно, этим должна заниматьсяспециализированная команда

6

Page 6: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

© Copyright JSC “Arcadia, Inc.”

Темплейты и сниппеты – не путаем!

7

Темплейты

• Используются в начале разработки проекта (new project) или одного из его компонентов (new item)

• Могут содержать предопределенные:

• Файлы

• Ссылки

• Код

• Требуют установки на окружение разработчика

• Разработка при помощи Visual Studio SDK

Сниппеты

• Используются в процессе разработки проекта

• Могут содержать только куски кода

• Не требуют установки непосредственно на окружение, требуется конфигурация для совместного использования

• Разработка при помощи Snippetizer

Page 7: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

© Copyright JSC “Arcadia, Inc.”

Темплейты

• Для начала разработки – необходимо установить Visual Studio SDK

• После этого появится новая секция - Extensibility

8

Page 8: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

© Copyright JSC “Arcadia, Inc.”

Темплейты – «грабли» и детали

• Visual Studio не скажет что у вас в темплейтеошибка, а просто его не покажет после установки. Имейте это в ввиду!

• Можно использовать 3 подхода• Написание с ноля на базе имеющихся примеров

• Создание из готового проекта при помощи «Волшебника»

• Изменение и дополнение готового темплейта

• References – не забываем, особенно если их много! Как для project’ов так и для item’ов.

• Путь к вашему SDK или библиотеке можно хранить в переменной окружения как на иллюстрации

• У них есть свойства

• Используйте partial классы! С ними прекрасно уживаются многочисленные Item-ы

• В комментариях к темплейту можно перечислить шорткаты для связанных сниппетов

9

Page 9: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

© Copyright JSC “Arcadia, Inc.”

Темплейты – а если добвавить Т4?

• Могут быть включены в Visual Studio темплейт!

• Добавить можно через New Item -> Text Template

• В .tt файле описывается процесс генерации кода. В .cs после сохранения появляется результат.

• Богатые возможности генерации кода на базе .NET

• Валидация результатов, генерирование на базе данных из БД -также возможны

• IntelliSense• При написании кода темплейта

можно использовать аддон DevArt T4 –лучшее решение

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

10

Page 10: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

© Copyright JSC “Arcadia, Inc.”

Сниппеты

• Прежде чем писать что-то свое –посмотри, попробуй уже готовое!http://visualstudiocodesnippets.com

• Многие не пользуются даблтаб… Другие делают это только иногда!

• Используйте общую сетевую папку для обмена сниппетами…

• Не используйте имя Snippets для её названия

• Можно сниппеты для разных языков держать в одной папке – студия отфильтрует

11

Page 11: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

© Copyright JSC “Arcadia, Inc.”

Snippetizer

• Теперь стало легче… Snippetizer! Скачать из Visual Studio Extensions

• Валидации в Snippetizer нет…

• Не называйте созвучно с именами объектов, и будет вам счастье. К примеру, xmlwrite и xmlwriterодинаково плохи, классно работает xmllog.

• Пробелы не допустимы

• Хорошо приживется следующее соглашение по наименованию –[язык][проект][название]. Примеры: jsportalformat, cscuiis7setlup

• При создании обратите внимание на значения field, selection location и caret location

12

Page 12: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

© Copyright JSC “Arcadia, Inc.”

Примеры использования

13

Компонент Элементы

Собственный SDK Все

Общая библиотека классов Templates, code snippets, T4

WPF Templates, code snippets, T4

Silverlight Templates, code snippets, T4

WIX Templates, code snippets, T4

UX Templates, code snippets

MVC5 Scaffolding, code snippets

InstallShield Custom tools

Page 13: Повышение эффективности командной разработки и поддерживаемости кода за счет использования компонентов

© Copyright JSC “Arcadia, Inc.”

Удачи на просторах!

14

Yes, using snippets could be a good idea. Seems simple to set up. I can bring this up in next TPO meeting to see if we can start building up a snippet library right way. Maybe we can classify snippets by good to have and official snippets etc.

- Leading Software Architect