|
|
|||||||||||||||||||||||||||||
|
10 моих любимых функций CodeRush для .NET разработки в Visual StudioИсточник: 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: Эта полоска ненавязчиво показывает разноцветные засечки (цвет сигнализирует серьезность проблемы), указывающие программисту на возможные проблемы в коде. Полный список диагностируемых проблем (включая даже дубликатный код в решении!) можно посмотреть тут.
И, напоследок, если вы доверяете механизму анализа как своей жене:-), то в меню для файла в Solution Explorer есть волшебная команда Code Cleanup, которая собственно автоматом "почистит" за вас найденные проблемы. Но, если честно, то этой командой я никогда не пользуюсь, так как не люблю, когда кто-то полностью за меня автоматом правит код. Помню даже делал ребятам предложение, чтобы добавили диалог подтверждения для этой команды, так как мне она кажется довольно серьезной (чтобы избежать случайных нажатий в контекстном меню). Что касается поиска дупликатного кода (Duplicate Code Detection and Consolidation) и форматирования, то этими фишками я пользуюсь гораздо реже и не буду на них особо заострять внимание, просто оставлю ссылки для тех, кому будет интересно. В общем и целом, этот встроенный анализ кода является довольно сносной начальной защитой от дурака или зорким глазом партнера по парному программированию, если хотите. Думаю особенно будет полезно начинающим .NET разработчикам.
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Тут я бы хотел перечислить наиболее часто используемые мной сокращения, которые наверное пригодятся почти в любой программе:
На видео продемонстрированы все вышеописанные комбинации в действии:
С этими сокращениями по первой букве все интуитивно просто и понятно, разве кроме единственного исключения, которое обычно вызывает у меня улыбку: если использовать шаблон 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 (страница продукта с описанием полных возможностей и ссылкой на скачку пробной версии) Ссылки по теме
|
|