- PVSM.RU - https://www.pvsm.ru -
Вкратце, DevExpress CodeRush [1] — это платный плагин для Visual Studio, относящийся к классу productivity tools, который позволяет разработчику быстрее писать более качественный код, отлаживать его, запускать тесты, обнаруживать дефекты и выполнять другие полезные функции.
В этой статье я постарался собрать не просто список своих собственных предпочтений по его использованию, но и провести небольшую валидацию так, чтобы на выходе большинство из представленных фишек использовались другими ребятами в моей команде. Я считаю, что даже несмотря на активное развитие Visual Studio (особенно порадовала 2012я версия) и превращение некоторых из описанных функций в нативные, необходимость в сторонних помощниках типа CodeRush и ReSharper все еще актуальна для части разработчиков, так как позволяет сэкономить время и повысить общее удобство кодирования. Наконец, не стоит забывать, что еще достаточно разработчиков сидят на Visual Studio 2010- (как минимум сужу по множеству заказчиков) ввиду особенностей проекта, бюджета или просто привычки.
Итак, кому интересно узнать, что другие .NET разработчики используют для повышения эффективности пусть и малой, но не менее увлекательной части процесса конструирования программного обеспечения, прошу пожаловать под кат (внимание, много картинок и видео, а также опрос!)
Заранее предупреждаю, что моя «горячая десятка» демонстрирует всего лишь малую долю возможностей продукта (про себя думаю, что использую меньше 5%). Для большего удобства читателя помимо русских названий функционала буду приводить типичные для программисткого уха английские названия, указывать клавиатурные сокращения по умолчанию (если есть), а также указывать кое-где аналоги среди стандартных студийных возможностей.
Часто приходится работать с большими решениями, состоящими из десятков проектов, и поэтому данная функция бывает просто незаменима, чтобы найти нужное место в проекте:
Пользуюсь ей уже несколько лет в разных версиях Visual Studio и пока очень доволен (до появления этой возможности использовал VB-шный макрос, в последних версиях студии макросы вырезали, ЕМНИП). Надеюсь, кому-то эта маленькая функция будет также полезна, так как не все проекты еще используют Visual Studio 2012+, где появилась встроенная кнопка Collapse All прямо в Solution Explorer:
Нередкая ситуация, когда ты знаешь нужный файл с исходным кодом по имени и хочешь быстро в него попасть. Для этого просто незаменима команда Control+Alt+F, которая позволяет сделать переход максимально быстро:
Начиная с версии Visual Studio 2012 доступна похожая функция в Solution Explorer:
Эта опция очень похожа на предыдущую, разница лишь в том, что навигируемся мы уже не по файлам, а по всем типам и их членам:
Откровенно, если решение просто огромное, то вызов этого диалога поиска без каких-либо дополнительных настроек может давать заметный лаг по понятным причинам. Чтобы этого избежать, рекомендую провести небольшой тюнинг поиска (по разновидностям типов и членов, доступу и области), который поможет избавиться от мусорных результатов и также повысить отзывчивость. Конечно, было бы еще лучше, если бы список не перестраивался при каждом вызове, а кешировался до пересборки (нужно предложить нашей IDE команде сделать такую опцию).
Как альтернативу я иногда использую старый-добрый студийный поиск, например Control+Shift+F по строке “ss ClassName”, что в принципе тоже неплохо работает. Также вполне для этой цели удобна стандартная Navigate To [2] (Control+,) фишка, но использую я ее гораздо реже:
Это, наверное, одна из моих самых любимых возможностей! Она позволяет быстро узнать, где и как используется какой-то тип или член: например, откуда зовется данный метод. Для этого достаточно установить курсор на нужный объект в коде и нажать клавишу Tab (вперед) или Shift+Tab (назад), что является очень естественным и понятным для любого пользователя Windows:
Существуют стандартные студийные сокращения (Control+Shift+Arrow Up/Down) для того же самого, но они у меня вызывают небольшую боль в левой руке, хотя, конечно, вы можете все это перенастроить под себя.
Я люблю избавляться от ненужных using в файлах, которые я посещаю, и делать так, чтобы все выглядело красиво и опрятно. Если вы такой же using-nazi как и я, то эта фича для вас:
Хотя эта возможность появилась еще в Visual Studio 2008 (команда Organize Usings [3] из контекстного меню), я до сих пор использую кодерашевский функционал, так как он кажется удобнее за счет подсветки и более быстрого вызова.
Стоит отметить, что в настройках можно выбрать сортировку по умолчанию, например у меня стоит по длине, вместо алфавитной:
Вкратце, этот встраиваемый в студию инструмент, по сути, является FxCop + StyleCop в одном флаконе стероидов, который визуально представлен тонкой полоской справа в Code Editor:
Эта полоска ненавязчиво показывает разноцветные засечки [4] (цвет сигнализирует серьезность проблемы), указывающие программисту на возможные проблемы в коде. Полный список диагностируемых проблем (включая даже дубликатный код в решении!) можно посмотреть тут [5].
Как и с другими подобными инструментами этот помощник можно гибко настроить под себя или принятые в компании code rules, чтобы показывались только нужные подсказки:
И, напоследок, если вы доверяете механизму анализа как своей жене:-), то в меню для файла в Solution Explorer есть волшебная команда Code Cleanup [6], которая собственно автоматом «почистит» за вас найденные проблемы. Но, если честно, то этой командой я никогда не пользуюсь, так как не люблю, когда кто-то полностью за меня автоматом правит код. Помню даже делал ребятам предложение, чтобы добавили диалог подтверждения для этой команды, так как мне она кажется довольно серьезной (чтобы избежать случайных нажатий в контекстном меню).
Что касается поиска дупликатного кода [7] (Duplicate Code Detection and Consolidation) и форматирования [8], то этими фишками я пользуюсь гораздо реже и не буду на них особо заострять внимание, просто оставлю ссылки для тех, кому будет интересно.
В общем и целом, этот встроенный анализ кода является довольно сносной начальной защитой от дурака или зорким глазом партнера по парному программированию, если хотите. Думаю особенно будет полезно начинающим .NET разработчикам.
В заключение тут стоит отметить, что помимо упомянутых ранее FxCop/StyleCop с Visual Studio 2012 появилось окошко Code Analysis, выполняющее похожие функции:
Многие считают хорошим тоном иметь в одном исходном файле только один публичный класс, и если это вдруг не так, то команда Move Type To File поможет это максимально быстро исправить. Родственная команда Rename File to Match Type позволяет переименовать файл по имени типа, находящегося в нем, если вдруг их имена не совпадают. Ну и, наконец, вы можете переименовать любой типа или член через интуитивное нажатие F2, предварительно поставив курсор на нужный элемент:
Частенько при наследовании необходимо реализовать конструкторы базового типа с кучей параметров, которые предпочтительнее бы не набирать самому, а лучше скопировать откуда-то или нагенерить автоматом. Данная команда позволяет сделать всю рутинную работу в один мышиный клик или за пару нажатий клавиш на клавиатуре:
До этого я обычно перемещался к объявлению базового типа через F12 и копировал сигнатуру его конструкторов.
Очень часто бывает нужно упростить какой-то метод или сделать область видимости переменной более широкой. Я предпочитаю для этих задач возможности CodeRush:
, хотя и стоит, наверное, упомянуть, что тоже самое, но чуть менее удобно, можно сделать и через встроенный рефатор:
Тут я бы хотел перечислить наиболее часто используемые мной сокращения, которые наверное пригодятся почти в любой программе:
На видео продемонстрированы все вышеописанные комбинации в действии:
С этими сокращениями по первой букве все интуитивно просто и понятно, разве кроме единственного исключения, которое обычно вызывает у меня улыбку: если использовать шаблон pdt, который в моем мире должен выдавать свойство типа DateTime, то получим на выходе свойство типа DataTable – не очень похоже на самый часто используемый тип разработчиками во всем мире:-). Для самого же DateTime используется «тонкий» pd8 (от схожего звучания date c «д» + «восемь» по-английски). Благо все это можно опять же гибко настроить через диалог настроек, в котором также можно создать собственные шаблоны:
Конечно же это не все шаблоны или сокращения и, кому интересно, можно будет посмотреть полный список вот тут [10] или вызвать прямо в Visual Studio через комбинацию Control+Alt+/ [11] (хотя честно сомневаюсь, что в мире кто-то использует и 20% от общего числа этих сокращений).
В плане сокращений я, можно сказать, немножно нестандартной ориентации, так как умудряюсь пользоваться одновременно как стандартными студийными средствами (Insert Code Snipped, что по Control+K+X), так и кодерашевскими, правда они почти не пересекаются:
<irony>Unload CodeRush for certain projects</irony>
Ни для кого, наверное, не секрет, что любые расширения для Visual Studio, какими бы хорошими они не были, не ускоряют работу самой IDE. Что уж говорить, когда речь идет о манипулировании просто огромными решениям, например из 80ти и больше проектов – в таких случаях сама «чистая» студия уже еле шевелится, не то что с плагинами… В такие моменты даже у самых лояльных пользователей вот вот да и закрадется мысль поскорее отключить все дополнительные свистелки, ну или как-то минизировать их воздействие:
В частности, мне бы было очень полезно иметь возможность включать функции CodeRush только для нужных проектов, с которыми, например, чаще всего работаешь. Сейчас такой фишки нет, но если бы была, то тогда она точно бы попала в список моих любимых, поэтому и занимает почетное одиннадцатое место, хоть и виртуальное:-)
Конечно же, это не все фишки, которые я использую и есть еще куча мелких и приятных плюшек, которые не заслуживают отдельных пунктов (структурная подстветка кода [12], проверка правописания [13], выбор цвета в коде [14], «умные» скобки [15], визуализация глубокой отладки [16] и еще 100500 других возможностей [17]).
Помню пару лет назад мне очень понравилось, когда ребята из нашей команды IDE сделали Friction Free [18] режим работы, который позволяет гибко настроить CodeRush именно под ваш стиль кодирования. Это было сделано специально, чтобы минимизировать воздействие искусственного интелекта помощника, а именно, чтобы он не думал, что лучше вас знает, что вам любо и не любо, и не добавлял непонятные куски кода в ответ на случайные нажатия на клавиатуре. Конкретно, этот «silent mode» показывает подтверждение, если во время набора вы выполнили какую-то CodeRush команду:
Т.е. если вам понравилось, что произошло, то вы можете разрешить ему делать это и дальше. Так со временем, просто делая свою обычную работу, вы сможете научить CodeRush делать только то, что вам нужно, и совсем не вмешиваться в привычный процесс кодирования (несколько лет назад он и правда грешил этим), при этом не ломая ваши привычки, что, как известно, является одним из признаков софта, которым приятно пользоваться. Помню, когда эта возможность только появилась, я специально выставил этот режим и смог избавиться от нескольких надоедливых фишек этого «умника», которые иногда случайно вызывались, но которые мне не хватало духа и времени найти в настройках и отрубить.
CodeRush for Visual Studio [1] (страница продукта с описанием полных возможностей и ссылкой на скачку пробной версии)
Search and Navigation Tips/Tricks with Visual Studio [19] (статья про стандартные возможности IDE из блога Scott Guthrie)
Остерегайтесь инструментов повышения производительности [20] (горячая дискуссия на Хабре)
DevExpress CodeRush Tips & Tricks [21] (частный блог о применении инструмента)
Статьи про CodeRush на Хабре [22]
С уважением,
Денис
Автор: DenisGaravsky
Источник [23]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/net/54661
Ссылки в тексте:
[1] DevExpress CodeRush: http://www.devexpress.com/coderush
[2] Navigate To : http://blogs.msdn.com/b/mvpawardprogram/archive/2013/10/22/visual-studio-2013-navigate-to-improvements.aspx
[3] Organize Usings: http://habrastorage.org/files/876/767/24a/87676724a7e04ca39a6d17dfe9ed5efe.png
[4] разноцветные засечки: http://documentation.devexpress.com/#CodeRush/CustomDocument6588
[5] посмотреть тут: http://documentation.devexpress.com/#CodeRush/CustomDocument10144
[6] Code Cleanup: http://documentation.devexpress.com/#CodeRush/CustomDocument9883
[7] поиска дупликатного кода: http://documentation.devexpress.com/#CodeRush/CustomDocument10814
[8] форматирования: http://documentation.devexpress.com/#CodeRush/CustomDocument9771
[9] специальные шаблоны: http://documentation.devexpress.com/#CodeRush/CustomDocument9279
[10] полный список вот тут: http://www.skorkin.com/2010/08/coderush-shortcuts-and-templates-cheat-sheet/#.UswcF_QW310
[11] через комбинацию Control+Alt+/: http://documentation.devexpress.com/#CodeRush/CustomDocument11759
[12] структурная подстветка кода: http://documentation.devexpress.com/#CodeRush/CustomDocument3535
[13] проверка правописания: http://documentation.devexpress.com/#CodeRush/CustomDocument11125
[14] выбор цвета в коде: http://documentation.devexpress.com/#CodeRush/CustomDocument8887
[15] «умные» скобки: http://documentation.devexpress.com/#CodeRush/CustomDocument6523
[16] визуализация глубокой отладки: http://documentation.devexpress.com/#CodeRush/CustomDocument14322
[17] еще 100500 других возможностей: http://documentation.devexpress.com/#CodeRush/CustomDocument3529
[18] Friction Free: https://community.devexpress.com/blogs/rorybecker/archive/2012/07/16/coderush-friction-free-mode-and-setting-schemes.aspx
[19] Search and Navigation Tips/Tricks with Visual Studio: http://weblogs.asp.net/scottgu/archive/2010/08/24/search-and-navigation-tips-tricks-with-visual-studio.aspx
[20] Остерегайтесь инструментов повышения производительности: http://habrahabr.ru/post/170443/
[21] DevExpress CodeRush Tips & Tricks: http://www.skorkin.com/
[22] Статьи про CodeRush на Хабре: http://habrahabr.ru/search/?q=coderush
[23] Источник: http://habrahabr.ru/post/211805/
Нажмите здесь для печати.