+7 (495) 229-0436   shopadmin@itshop.ru 119334, г. Москва, ул. Бардина, д. 4, корп. 3
 
 
Вход
 
 
Каталог
 
 
Подписка на новости
Новости ITShop
Windows 7 и Office: Новости и советы
Обучение и сертификация Microsoft
Вопросы и ответы по MSSQLServer
Delphi - проблемы и решения
Adobe Photoshop: алхимия дизайна
 
Ваш отзыв
Оцените качество магазина ITShop.ru на Яндекс.Маркете. Если вам нравится наш магазин - скажите об этом Google!
 
 
Способы оплаты
 
Курс расчета
 
 1 у.е. = 66.89 руб.
 
 Цены показывать:
 
 
 
 
  
Новости, статьи, акции
 

10 моих любимых функций CodeRush для .NET разработки в Visual Studio

21.03.2014 14:39
habrahabr.ru
Denis Garavsky

Вкратце, DevExpress CodeRush - это платный плагин для Visual Studio, относящийся к классу productivity tools, который позволяет разработчику быстрее писать более качественный код, отлаживать его, запускать тесты, обнаруживать дефекты и выполнять другие полезные функции.

В этой статье я постарался собрать не просто список своих собственных предпочтений по его использованию, но и провести небольшую валидацию так, чтобы на выходе большинство из представленных фишек использовались другими ребятами в моей команде. Я считаю, что даже несмотря на активное развитие Visual Studio (особенно порадовала 2012я версия) и превращение некоторых из описанных функций в нативные, необходимость в сторонних помощниках типа CodeRush и ReSharper все еще актуальна для части разработчиков, так как позволяет сэкономить время и повысить общее удобство кодирования. Наконец, не стоит забывать, что еще достаточно разработчиков сидят на Visual Studio 2010- (как минимум сужу по множеству заказчиков) ввиду особенностей проекта, бюджета или просто привычки.

Итак, кому интересно узнать, что другие .NET разработчики используют для повышения эффективности пусть и малой, но не менее увлекательной части процесса конструирования программного обеспечения, прошу пожаловать под кат (внимание, много картинок и видео, а также опрос!)

Заранее предупреждаю, что моя "горячая десятка" демонстрирует всего лишь малую долю возможностей продукта (про себя думаю, что использую меньше 5%). Для большего удобства читателя помимо русских названий функционала буду приводить типичные для программисткого уха английские названия, указывать клавиатурные сокращения по умолчанию (если есть), а также указывать кое-где аналоги среди стандартных студийных возможностей.

1. Сворачивание дерева проектов в Solution Explorer для Visual Studio 2010-/Collapse To Projects

Часто приходится работать с большими решениями, состоящими из десятков проектов, и поэтому данная функция бывает просто незаменима, чтобы найти нужное место в проекте:

 
Пользуюсь ей уже несколько лет в разных версиях Visual Studio и пока очень доволен (до появления этой возможности использовал VB-шный макрос, в последних версиях студии макросы вырезали, ЕМНИП). Надеюсь, кому-то эта маленькая функция будет также полезна, так как не все проекты еще используют Visual Studio 2012+, где появилась встроенная кнопка Collapse All прямо в Solution Explorer:

2. Быстрая навигация по файлам в решении/Quick File Navigation (Control+Alt+F)

Нередкая ситуация, когда ты знаешь нужный файл с исходным кодом по имени и хочешь быстро в него попасть. Для этого просто незаменима команда Control+Alt+F, которая позволяет сделать переход максимально быстро:
 
Начиная с версии Visual Studio 2012 доступна похожая функция в Solution Explorer:

3. Быстрая навигация по типам и членам в решении/Quick Navigation (Control+Shift+Q)

Эта опция очень похожа на предыдущую, разница лишь в том, что навигируемся мы уже не по файлам, а по всем типам и их членам:
 

Откровенно, если решение просто огромное, то вызов этого диалога поиска без каких-либо дополнительных настроек может давать заметный лаг по понятным причинам. Чтобы этого избежать, рекомендую провести небольшой тюнинг поиска (по разновидностям типов и членов, доступу и области), который поможет избавиться от мусорных результатов и также повысить отзывчивость. Конечно, было бы еще лучше, если бы список не перестраивался при каждом вызове, а кешировался до пересборки (нужно предложить нашей IDE команде сделать такую опцию).

Как альтернативу я иногда использую старый-добрый студийный поиск, например Control+Shift+F по строке "ss ClassName", что в принципе тоже неплохо работает. Также вполне для этой цели удобна стандартная Navigate To(Control+,) фишка, но использую я ее гораздо реже:

4. Навигация по местам использования типов и членов/Tab To Next Reference (Tab/Shift+Tab)

Это, наверное, одна из моих самых любимых возможностей! Она позволяет быстро узнать, где и как используется какой-то тип или член: например, откуда зовется данный метод. Для этого достаточно установить курсор на нужный объект в коде и нажать клавишу Tab (вперед) или Shift+Tab (назад), что является очень естественным и понятным для любого пользователя Windows:

Существуют стандартные студийные сокращения (Control+Shift+Arrow Up/Down) для того же самого, но они у меня вызывают небольшую боль в левой руке, хотя, конечно, вы можете все это перенастроить под себя.

5. Оптимизация пространств имен/Optimize Namespace References (Control+~)

Я люблю избавляться от ненужных using в файлах, которые я посещаю, и делать так, чтобы все выглядело красиво и опрятно. Если вы такой же using-nazi как и я, то эта фича для вас:

 
Хотя эта возможность появилась еще в Visual Studio 2008 (команда Organize Usings из контекстного меню), я до сих пор использую кодерашевский функционал, так как он кажется удобнее за счет подсветки и более быстрого вызова.

Стоит отметить, что в настройках можно выбрать сортировку по умолчанию, например у меня стоит по длине, вместо алфавитной:

6. Анализ кода и форматирования/Code Analysis & Code Style (Control+~)

Вкратце, этот встраиваемый в студию инструмент, по сути, является FxCop + StyleCop в одном флаконе стероидов, который визуально представлен тонкой полоской справа в Code Editor:

Эта полоска ненавязчиво показывает разноцветные засечки (цвет сигнализирует серьезность проблемы), указывающие программисту на возможные проблемы в коде. Полный список диагностируемых проблем (включая даже дубликатный код в решении!) можно посмотреть тут.
Как и с другими подобными инструментами этот помощник можно гибко настроить под себя или принятые в компании code rules, чтобы показывались только нужные подсказки:

И, напоследок, если вы доверяете механизму анализа как своей жене:-), то в меню для файла в Solution Explorer есть волшебная команда Code Cleanup, которая собственно автоматом "почистит" за вас найденные проблемы. Но, если честно, то этой командой я никогда не пользуюсь, так как не люблю, когда кто-то полностью за меня автоматом правит код. Помню даже делал ребятам предложение, чтобы добавили диалог подтверждения для этой команды, так как мне она кажется довольно серьезной (чтобы избежать случайных нажатий в контекстном меню).

Что касается поиска дупликатного кода (Duplicate Code Detection and Consolidation) и форматирования, то этими фишками я пользуюсь гораздо реже и не буду на них особо заострять внимание, просто оставлю ссылки для тех, кому будет интересно.

В общем и целом, этот встроенный анализ кода является довольно сносной начальной защитой от дурака или зорким глазом партнера по парному программированию, если хотите. Думаю особенно будет полезно начинающим .NET разработчикам.
В заключение тут стоит отметить, что помимо упомянутых ранее FxCop/StyleCop с Visual Studio 2012 появилось окошко Code Analysis, выполняющее похожие функции:

7. Вынос типа в файл, переименования типа или файла/Move Type To File, Rename, Rename File to Match Type (Control+~)

Многие считают хорошим тоном иметь в одном исходном файле только один публичный класс, и если это вдруг не так, то команда Move Type To File поможет это максимально быстро исправить. Родственная команда Rename File to Match Type позволяет переименовать файл по имени типа, находящегося в нем, если вдруг их имена не совпадают. Ну и, наконец, вы можете переименовать любой типа или член через интуитивное нажатие F2, предварительно поставив курсор на нужный элемент:
 

8. Добавление конструкторов базового типа/Add Missing Constructors (Control+~)

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

9. Вынос метода или переменной/Extract Method, Widen Scope (Control+~)

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

10. Шаблоны для быстрой генерации кода/Code Generation Templates

Тут я бы хотел перечислить наиболее часто используемые мной сокращения, которые наверное пригодятся почти в любой программе:
  • сс - добавляет конструктор к типу. Несмотря на простоту, это довольно умный шаблон, который в отличие от стандартного анализирует члены типа и предлагает добавить их как параметры, что бывает часто удобно.
  • - добавляет цикл for, причем может автоматом брать верхнюю границу из ранее скопированной в буфер обмена переменной, например коллекции.
  • fe - добавляет цикл foreach, причем может автоматом вычислить тип элемента по ранее скопированной в буфер обмена переменной, например коллекции.
  • r?, p? - добавляет новое свойство типа, который обычно выбирается по первой букве. Например, p сделает свойства типа object, pi сделает своство типа int, pd - свойство типа double, pb - bool и так далее. Если нужно свойство только для чтения, то вместо p используется r, например rb.
  • x?
    По роду своей деятельности часто создаю модели данных для наших фреймворков XAF и XPO, поэтому использую специальные шаблоны, которые по умолчанию начинаются с x (xc, xp?, xr?, xpcl, xpa)

На видео продемонстрированы все вышеописанные комбинации в действии:

 

 
С этими сокращениями по первой букве все интуитивно просто и понятно, разве кроме единственного исключения, которое обычно вызывает у меня улыбку: если использовать шаблон pdt, который в моем мире должен выдавать свойство типа DateTime, то получим на выходе свойство типа DataTable - не очень похоже на самый часто используемый тип разработчиками во всем мире:-). Для самого же DateTime используется "тонкий" pd8 (от схожего звучания date c "д" + "восемь" по-английски). Благо все это можно опять же гибко настроить через диалог настроек, в котором также можно создать собственные шаблоны:

Конечно же это не все шаблоны или сокращения и, кому интересно, можно будет посмотреть полный список вот тут или вызвать прямо в Visual Studio через комбинацию Control+Alt+/ (хотя честно сомневаюсь, что в мире кто-то использует и 20% от общего числа этих сокращений). 

В плане сокращений я, можно сказать, немножко нестандартной ориентации, так как умудряюсь пользоваться одновременно как стандартными студийными средствами (Insert Code Snipped, что по Control+K+X), так и кодерашевскими, правда они почти не пересекаются:

 

 

В заключение


Помню пару лет назад мне очень понравилось, когда ребята из нашей команды IDE сделали Friction Free режим работы, который позволяет гибко настроить CodeRush именно под ваш стиль кодирования. Это было сделано специально, чтобы минимизировать воздействие искусственного интелекта помощника, а именно, чтобы он не думал, что лучше вас знает, что вам любо и не любо, и не добавлял непонятные куски кода в ответ на случайные нажатия на клавиатуре. Конкретно, этот "silent mode" показывает подтверждение, если во время набора вы выполнили какую-то CodeRush команду:

Т.е. если вам понравилось, что произошло, то вы можете разрешить ему делать это и дальше. Так со временем, просто делая свою обычную работу, вы сможете научить CodeRush делать только то, что вам нужно, и совсем не вмешиваться в привычный процесс кодирования (несколько лет назад он и правда грешил этим), при этом не ломая ваши привычки, что, как известно, является одним из признаков софта, которым приятно пользоваться. Помню, когда эта возможность только появилась, я специально выставил этот режим и смог избавиться от нескольких надоедливых фишек этого "умника", которые иногда случайно вызывались, но которые мне не хватало духа и времени найти в настройках и отрубить.

Возможно также будет интересно:

CodeRush for Visual Studio (страница продукта с описанием полных возможностей и ссылкой на скачку пробной версии)
Search and Navigation Tips/Tricks with Visual Studio (статья про стандартные возможности IDE из блога Scott Guthrie)
Остерегайтесь инструментов повышения производительности (горячая дискуссия на Хабре)
DevExpress CodeRush Tips & Tricks (частный блог о применении инструмента)
Статьи про CodeRush на Хабре

Ссылки по теме

  
Помощь
Задать вопрос
 программы
 обучение
 экзамены
 компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты

Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 
Популярные статьи
Резервное копирование Информационная безопасность Антивирусное ПО и защита от спама Eset Software
 
Бестселлеры
Курсы обучения "Atlassian JIRA - система управления проектами и задачами на предприятии"
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год. Электронный ключ
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2016. Все языки. Электронный ключ
Курс "Oracle. Программирование на SQL и PL/SQL"
Курс "Основы TOGAF® 9"
Microsoft Windows Professional 10 Sngl OLP 1 License No Level Legalization GetGenuine wCOA (FQC-09481)
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Windows Server 2016 Standard
Курс "Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации"
Антивирус ESET NOD32 Antivirus Business Edition
Corel CorelDRAW Home & Student Suite X8
 

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

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

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

В нашем магазине вы можете приобрести лицензионное ПО выбрав необходимое из широкого спектра и ассортимента по самым доступным ценам. Наши менеджеры любезно помогут определиться с выбором ПО, которое необходимо именно вам. Также мы проводим учебные курсы. Мы приглашаем к сотрудничеству учебные центры, организаторов семинаров и бизнес-тренингов, преподавателей. Сфера сотрудничества - продвижение бизнес-тренингов и курсов обучения по информационным технологиям.



 

О нас

 
Главная
Каталог
Новинки
Акции
Вакансии
 

Помощь

 
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 

Способы оплаты

 

Проекты Interface Ltd.

 
Interface.ru   ITShop.ru   Interface.ru/training   Olap.ru   ITnews.ru  
 

119334, г. Москва, ул. Бардина, д. 4, корп. 3
+7 (495) 229-0436   shopadmin@itshop.ru
Проверить аттестат
© ООО "Interface Ltd."
Продаем программное обеспечение с 1990 года