Upload
gosharp
View
268
Download
1
Embed Size (px)
Citation preview
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
© Copyright JSC “Arcadia, Inc.”
Зачем генерировать код?
• Повышение производительности труда разработчика
• Стандартизация подходов в программировании
• Упрощение поддержки кода
• Уменьшение затрат времени на обучение, поддержку и реализацию решений
• Намного проще следовать стандарту, если он «зашит» в инструменте
• Технический контроль над процессом разработки
2
Почему недостаточно готовых решений?
• У всех свои вкусы, а иногда и лицензии! Кто-то пользуется Visual Assist, кто-то ReSharper…
• Опять же, инструменты надо настроить под свои нужды
• Нет полного контроля над функциональностью
• Его надо купить и получить зависимость процесса разработки еще от одного коммерческого продукта
© Copyright JSC “Arcadia, Inc.”
Главный залог успеха проекта
В случае разногласий – это зафиксированные стандарты.
Они могут служить точкой отсчета в контрактных взаимоотношениях с заказчиком.
Как результат – лучшее взаимопонимание!
3
© 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
© Copyright JSC “Arcadia, Inc.”
Как автоматизировать написание кода?
• Машины для человека – не наоборот!
• Исследовать поведение разработчиков, собрать статистику
• Сначала позаботьтесь о мелочах. О том, что разработчики делают в последнюю очередь (или забывают делать). Копирайт в библиотеке, и прочее…
• Убедиться что для конфигурирования расширений не требуется существенных усилий и они легко доступны
• Лучше 10 раз упомянуть одно и тоже в комментариях, чем плохо донести до пользователя
• Наладить обратную связь и поддержку
• Возможно, этим должна заниматьсяспециализированная команда
6
© Copyright JSC “Arcadia, Inc.”
Темплейты и сниппеты – не путаем!
7
Темплейты
• Используются в начале разработки проекта (new project) или одного из его компонентов (new item)
• Могут содержать предопределенные:
• Файлы
• Ссылки
• Код
• Требуют установки на окружение разработчика
• Разработка при помощи Visual Studio SDK
Сниппеты
• Используются в процессе разработки проекта
• Могут содержать только куски кода
• Не требуют установки непосредственно на окружение, требуется конфигурация для совместного использования
• Разработка при помощи Snippetizer
© Copyright JSC “Arcadia, Inc.”
Темплейты
• Для начала разработки – необходимо установить Visual Studio SDK
• После этого появится новая секция - Extensibility
8
© Copyright JSC “Arcadia, Inc.”
Темплейты – «грабли» и детали
• Visual Studio не скажет что у вас в темплейтеошибка, а просто его не покажет после установки. Имейте это в ввиду!
• Можно использовать 3 подхода• Написание с ноля на базе имеющихся примеров
• Создание из готового проекта при помощи «Волшебника»
• Изменение и дополнение готового темплейта
• References – не забываем, особенно если их много! Как для project’ов так и для item’ов.
• Путь к вашему SDK или библиотеке можно хранить в переменной окружения как на иллюстрации
• У них есть свойства
• Используйте partial классы! С ними прекрасно уживаются многочисленные Item-ы
• В комментариях к темплейту можно перечислить шорткаты для связанных сниппетов
9
© Copyright JSC “Arcadia, Inc.”
Темплейты – а если добвавить Т4?
• Могут быть включены в Visual Studio темплейт!
• Добавить можно через New Item -> Text Template
• В .tt файле описывается процесс генерации кода. В .cs после сохранения появляется результат.
• Богатые возможности генерации кода на базе .NET
• Валидация результатов, генерирование на базе данных из БД -также возможны
• IntelliSense• При написании кода темплейта
можно использовать аддон DevArt T4 –лучшее решение
• При разработке не генерируемого кода – можно копировать из сгенерированного файла, он будет автоматически удален при генерации
10
© Copyright JSC “Arcadia, Inc.”
Сниппеты
• Прежде чем писать что-то свое –посмотри, попробуй уже готовое!http://visualstudiocodesnippets.com
• Многие не пользуются даблтаб… Другие делают это только иногда!
• Используйте общую сетевую папку для обмена сниппетами…
• Не используйте имя Snippets для её названия
• Можно сниппеты для разных языков держать в одной папке – студия отфильтрует
11
© Copyright JSC “Arcadia, Inc.”
Snippetizer
• Теперь стало легче… Snippetizer! Скачать из Visual Studio Extensions
• Валидации в Snippetizer нет…
• Не называйте созвучно с именами объектов, и будет вам счастье. К примеру, xmlwrite и xmlwriterодинаково плохи, классно работает xmllog.
• Пробелы не допустимы
• Хорошо приживется следующее соглашение по наименованию –[язык][проект][название]. Примеры: jsportalformat, cscuiis7setlup
• При создании обратите внимание на значения field, selection location и caret location
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
© 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