Программируем быстрее с 
CodeRush 
Александр Захаров 
https://www.devexpress.com 
Developer Express Inc.
О КОМАНДЕ 
• Разработка дополнений для VisualStudio 
• CodeRush (CR) - наш основной продукт 
• Цель - удобный иснтрумент для 
эффективной ежедневной разработки
CodeRush
ЗА И ПРОТИВ ДОПОЛНЕНИЙ ДЛЯ VS 
• Новые возможности 
• Повышение эффективности 
• Удобство использования 
• Влияние на IDE (память, 
производительность, стабильность) 
• Нарушение привычек разработки
ОБЗОР ОСНОВНЫХ ВОЗМОЖНОСТЕЙ CR 
• Работа в редакторе 
• Шаблоны кода 
• Рефакторинг 
• Навигация 
• Статический анализ 
• Работа с тестами 
• Инструменты отладки
РАБОТА В РЕДАКТОРЕ 
• Tab to Next/Prev Reference (Tab, Shift + Tab) 
• Selection Expand/Reduce (Ctrl+W, 
Ctrl+Shift+W) 
• Selection Comment (‘, /) 
• Camel Case Left/Right (Alt+Left, Alt+Right) 
• Camel Case Select Left/Right (Shift+Alt+Left, 
Shift+Alt+Right) 
• Paste Replace Word (Ctrl+B)
ШАБЛОНЫ КОДА 
c - class 
i - interface 
s - struct 
d - delegate 
m - method 
p - property 
a - auto property 
r - readonly property 
w - write only property 
f - field 
v - variable
ДИНАМИЧЕСКИЕ ШАБЛОНЫ 
v - void 
o - object 
by - byte 
sh - short 
i - int 
c - char 
s - string 
b - bool 
u - uint 
l - long 
f - float 
d - double 
de - decimal 
d8 - DateTime 
ip - IntPtr
ПРИМЕРЫ РАСКРЫТИЯ ШАБЛОНОВ 
ms 
mb 
ac 
ad8
РЕФАКТОРИНГ 
• Шорткат: Ctrl+~ 
• Move Type to File 
• Use String.Format 
• Introduce Constant 
• Promote to Parameter 
• Add Parameter
MOVE TYPE TO FILE
USE STRING.FORMAT
НАВИГАЦИЯ 
• Маркеры (Alt+Home, Alt+Shift+Home, Esc) 
• Букмарки (Ctrl+Alt+1, Alt+1) 
• Quick Nav (Ctrl+Shift+Q) 
• Quick File Nav (Ctrl+Alt+F) 
• Recent Files (Ctrl+Alt+.) 
• Jump To (Ctrl+Alt+N)
QUICK NAV, QUICK FILE NAV
СТАТИЧЕСКИЙ АНАЛИЗ
АНАЛИЗ ДУБЛИРОВАНИЯ КОДА
РАБОТА С ТЕСТАМИ 
• Запуск и отладка тестов из кода 
• Поддержка NUnit, xUnit, MSTest, MSpec
ИНСТРУМЕНТЫ ОТЛАДКИ
VISUAL STUDIO 2015, CODERUSH 
• Roslyn - cервис компиляторов C# и 
VisualBasic 
• API доступный в Visual Studio 
• То на чем работает Visual Studio 
• Меньше потребление памяти 
• Производительность
СПАСИБО 
• https://www.devexpress.com 
• https://www.devexpress.com/Products/CodeRush
КОНТАКТ 
Александр Захаров CodeRush Lead Developer 
alexander.zakharov@devexpress.com
Программируем быстрее с CodeRush

Программируем быстрее с CodeRush

Editor's Notes

  • #2 Добрый день, меня зовут Александр Захаров, я представляю компанию DevExpress. В своем докладе я расскажу вам про CodeRush и как можно программировать быстрее с его использованием.
  • #3 Сначала несколько слов о компании DevExpress и команде. Наша компания занимается разработкой UI компонентов - это основное направление нашей деятельности. Мы начинали с VCL рынка, а сейчас основные наши платформы это WinForms, WPF, ASP.NET. Также компания работает над продуктами для мобильной разработки и для JavaScript разработчиков. Помимо UI компонентов, мы разрабатываем еще и дополнения для Visual Studio Моя команда трудится над CodeRush. Это отдельное направлеине разработки нашей компании. CodeRush - это дополнение для VisualStudio. Цель продукта - предоставить разработчикам удобный инструмент для повышения эффективности при решении ежедневных задач программирования. Мы начинали еще с поддержки VisualStudio 2003. CodeRush неоднократно отмечался раличными призами и наградами.
  • #4 Иллюстрация - визуальные элементы, которые добавляются после установки CodeRush в VisualStudio.
  • #5 Зачем нужны дополнения для VisualStudio? Есть свои “за” и “против”. У нас в компании есть разработчики, которые используют дополнения для VisualStudio и в то же время есть те, кто очень ревностно относится к своей IDE и никогда ничего не устанавливает. Аргументация при этом разная. Те кто не использует дополнения говорят: Это влияет на мою IDE Потребление памяти может быть больше. Время запуска может увеличиваться. Стабильность может нарушаться. Дополнения добавляют непонятно что и я неузнаю свою IDE. Но в то же время разработчиков, которые хотели бы получить дополнитльные функции в IDE значительно больше. Они хорошо осознают и видят на практике, что дополнения - это новые возможности. Новые возможности дают прирост эффективности. Такие люди сами ищут пути улучшения своей работы. И они всегда задаются вопросом, что и как можно улучшить. Ради таких разработчиков мы и работаем.
  • #6 Что же мы можем предложить? Время доклада не позволяет рассмотреть все, поэтому я расскажу об основных возможностях продукта. Итак, CodeRush это: Улучшения при наборе кода Шаблоны кода Инструменты рефакторинга Навигация Статический анализ Работа с тестами Инструменты отладки
  • #7 Часто возникает задача быстро найти и посмотреть все места где используется тот или иной символ CodeRush позволяет это сделать непосредственно из кода нажав Tab или Shift + Tab когда каретка находится на идентификаторе Для расширения или уменьшения выделенного кода можно использовать Ctrl+W и Ctrl+Shift+W Для того чтобы закоментировать часть кода, можно нажать ‘ или / Навигация по частям идентификаторов и выделение частей - Alt+Left, Alt+Right, Shift+Alt+Left, Shift+Alt+Right Вставка сразу с заменой текущего слова - Ctrl+B
  • #8 Шаблоны кода это одна из больших и мощных возможностей CodeRush. Шаблоны позволяют быстро добавить конструкции кода, которые очень часто набираются в повседневной работе. Например: декларация типов, полей, методов, свойств, событий, переменных и параметров. Для декларации типов (классов, структур, интерфейсов и делегатов) используются шаблоны c - декларация класса i - декларация интерфейса s - декларация структуры d - декларация делегата Для декларации элементов типов есть следующие шаблоны: m - метод p - свойство r - readonly свойство w - writeonly свойтво f - поле v - переменная В CodeRush есть динамические шаблоны. В динамических шаблонах часть мнемоники шаблона может менятся и выбираться из заранее определного списка.
  • #9 Динамические шаблоны в принципе по внешнему виду ничем не отличаются от обычных шаблонов. С динамическими шаблонами можно работать для декларации элементов с определенными возвращаемыми типами. Например если нам нужно объявить метод, который возвращает тип string, то в этом случае мы набираем m затем s - и нажимаем клавишу раскрытия шаблона (Пробел) Таким образом мы раскрыли шаблон ms В данном случае после мнемоники вторая буква указывает на тип: s - string, i - int, b - bool  и т.д.
  • #10 Здесь наглядно представлены примеры раскрытия шаблонов: mb, ms, ac, ad8 Заранее определенных шаблонов в CodeRush очень много, и может потребоваться некоторое время, чтобы в них разобраться. Но могу сказать, что оно того стоит если вы хотите быстро набирать код. Можно постепенно изучать один шаблон за другим, тратя на это пару минут в день. Запомнить на практике основные мнемоники и типы шаблонов. Это не займет много времени, но потом сэкономит значительно больше. И уже через неделю можно будет максимально использовать шаблоны при наборе кода.
  • #11 В CodeRush реализовано более 100 рефакторингов. Полный список и то как они работают можно найти на нашем сайте. В CodeRush есть один шорткат для доступа к рефаторингам: Ctrl+~ Очень часто наши пользователи применяют следующие рефакторинги: Move Type to File Use String.Format Introduce Constant Promote to Parameter Add Parameter
  • #12 Иллюстрация работы рефакторинга Move Type to File. Выбираем тип, нажимаем Ctrl+~, выбираем Move Type to File.
  • #13 Иллюстрация работы рефакторинга Use String.Format Здесь мы помещаем каретку на строку, нажимаем Ctrl+~ выбираем Use String.Format. Есть хинт, который показывает результат применения рефакторинга.
  • #14 Навигация в коде имеет очень важное значение. В CodeRush есть несколько возможностей для навигации в проекте. Для навигации по файлам можно использовать маркеры, для того, чтобы установить маркер нужно нажать Alt+Home Для того, чтобы вернуться к маркеру, нужно нажать Esc. Маркеры работают как стек. Для работы с букмарками используются комбинации Ctrl+Alt+1 - для того, чтобы установить букмарк Alt+1 - для того, чтобы перейти к установленному букмарку Используя Ctrl+~ меню можно снавигироваться на декларацию символа находящегося под кареткой. Jump To: Declaration Descendants Overrides Virtual Member Ancestor
  • #15 Quick Nav и Quick File Nav позволяют быстро снавигироваться к нужному типу или к нужному файлу. Quick Nav открывается комбинацией Ctrl+Shift+Q Quick File Nav открывается комбинацией Ctrl+Alt+F Можно использовать поиск и фильтрацию.
  • #16 В CodeRush есть статический анализ кода. Есть много правил для анализа, все их не перечислить, можно ознакомится в документации или на нашем сайте. Также можно добавлять свои правила проверки, для этого нужно написать плагин. Система расширений в CodeRush позволяет это сделать. CodeRush изначально поддерживает расширения, поэтому очень многие вещи можно сделать через плагины.
  • #17 Наряду со статическим анализом и поиском проблем в коде в CodeRush есть поиск дубликатных участков кода. Анализ дубликтов работает как на Copy Paste участках кода, так и на участках кода которые были скопированы а потом изменены. Конечно здесь нельзя говорить о поиске 100% функционально идентичных участках кода. Проверка прежде всего делается на основе структурной эквивалентности. Для поиска дублирующихся участков делается нормализация структуры кода. Т.е. сначала выполняется ряд преобразований кода, и потом происходит сравнение. Для найденых дублирующихся блоков, если это возможно предалагается возможность объединения их в один участок кода и измениением всех остальных участков. Консолидация кода.
  • #18 CodeRush позволяет запускать и отлаживать тесты непосредсвенно из кода. Для каждого тестового метода и фикстуры в коде добавляются иконки, при нажатии на которые можно запустить или отладить тест. Также состояние теста показывается непосредсвенно в коде. Это очень наглядно и удобно в режиме TDD. Кроме того есть окно Unit Test Runner где можно увидеть все тесты во всех проектах, запустить их и посмотреть статистику. Окно тест раннера удобно использовать если нужно запустить все тесты, или провести поиск нужно теста.
  • #19 Отладка кода - это очень важный этап в программировании, и может занимать время. Здесь от UI отладчика может зависит очень многое. Мы в CodeRush постарались упроситить процесс отладки при помощи инструментов визуализации. В процессе отладки CodeRush показывает значения переменных и параметров непосредсвенно в коде. Не нужно переключаться и добавлять переменные в окно Watch. Все необходимые значения сразу видны в коде.
  • #20 Visual Studio 2015 будет включать в свой состав Roslyn. Roslyn - это сервис компиляторов C# и VisualBasic. Нам это очень интересно. Сейчас мы работает над переводом части основной функциональности CodeRush на API Roslyn. Ипользование Rolsyn позволит нам сосредоточиться больше на конечной функциональности для разработчиков, а поддержка новых версий языков C# и VisualBasic и огромного пласта функциональности компиляторов будет осуществляться командой VisualStudio. Из заметных преимуществ здесь как раз можно отметь то, что мы сможем решить одну из проблем дополнений для VisualStudio о которых я говорил в начале доклада. Мы значительно уменьшим дополнительное потребление памяти и также сможем сделать CodeRush намного быстрее. На данный момент версия CodeRush, использующая Roslyn находится еще в ранней стадии. Мы планируем в следующем году выпустить первую версию. И дальше будем наращивать набор функционала и постепенно переводить все больше и больше фич из CodeRush.
  • #21 Спасибо за внимание.