Найти в Дзене

Простые лайфхаки для работы в Visual Studio

Оглавление

Всем привет! Сегодня небольшая статья о том, как ускорить и сделать более комфортной свою работу в Visual Studio. Если у вас есть какие-то другие фишки, которые я не учёл — смело пишите их в комментарии.

Горячие клавиши

Горячие клавиши есть практически у любой программы. Я же перечислю свои любимые из VS:

  • Переименование: Ctrl-RR (при нажатом Ctrl дважды нажать R, когда курсор на имени переменной) — переименование данной переменной (имени класса, неймспейса) в вашем проекте во всех местах, в том числе и в других файлах. Очень быстро, удобно, и не создаёт ошибок. Давать понятные и чёткие имена переменным очень важно для читаемости кода, эта комбинация клавиш сильно упрощает данную задачу.
  • Комментирование Ctrl-KC и раскомментирование Ctrk-KU набора строк. Выделяем строки, жмём комбинацию — вуаля, строки участвуют (не участвуют) в работе кода
  • Форматирование кода Ctrl-KD. Убрали фигурную скобку, и отступы стали не красивые, а руками править долго? Просто нажмите эту комбинацию, и всё в файле станет ровненьким и красивым.
  • Возврат IntelliSense (предлагаемых студией вариантов автозаполнения): Ctrl-Пробел. Работает в том числе и в Xaml на пустом месте — показывает все возможные свойства.
  • Показать контекстные действия: Ctrl-. (Ctrl-Ю) или Alt+Enter. Выводит контекстное меню "Быстрые действия". Там можно сделать много интересного, в зависимости от того, что вы выделили и где стоял курсор — экспериментируйте и проверяйте. Моё любимое: преобразование циклов for в foreach и обратно, преобразование for в обратный for. добавление директив using, реализация интерфейсов, быстрое исправление ошибок и извлечение метода. Про извлечение метода подробнее расскажу в конце.

Код-сниппеты

Это комбинации, набрав которые и дважды нажав Tab, можно получить сгенерированные код. Рассмотрим примеры:

  • for — создаст шаблон для цикла for.
  • forr — создаст шаблон для обратного цикла for.
  • ctor — создаст в классе конструктор по умолчанию (без параметров).
  • cw — Console.WriteLine().
  • mbox — MessageBox.Show() (для вывода сообщения).

А вот тут интереснее. MessageBox идёт из WindowsForms. А за чем нам ссылка на WinForms в WPF-приложении? А давайте выведем TaskDialog? И действительно, так сделать можно (тут подробности):

  1. Запускаем VS, выбираем "Продолжить без кода".
  2. Файл — Создать файл — новый xml-файл.
  3. Добавим в него код (почему такой — выше в подробностях):
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<Title>Task Dialog</Title>
<Author>Myself</Author>
<Description>Creates Autodesk.Revit.UI.TaskDialog</Description>
<Shortcut>td</Shortcut>
</Header>
<Snippet>
<Code Language="CSharp">
<![CDATA[TaskDialog.Show($Title$, $Content$);]]>
</Code>
<Declarations>
<Literal>
<ID>Title</ID>
<ToolTip>Title of TaskDialog.</ToolTip>
<Default>"Title"</Default>
</Literal>
<Literal>
<ID>Content</ID>
<ToolTip>MainInstruction of TaskDialog.</ToolTip>
<Default>"Content"</Default>
</Literal>
</Declarations>
</Snippet>
</CodeSnippet>
</CodeSnippets>

4. Сохраним файл с расширением .snippet где угодно

5. Выберем Средства — диспетчер фрагментов кода или Ctrl-KB.

6. Импортируем сохранённый сниппет:

Результат:

-2

Код-сниппет работает!

Извлечение метода

Для облегчения чтения кода и уменьшения числа повторяющихся фрагментов рекомендуется разбивать большие методы на маленькие. Как это можно сделать быстро:

  1. Пишем метод.
  2. Выделяем в методе логическую часть. Допустим, мы сначала получаем список, а потом работаем с его элементами
  3. Выделяем эту часть в коде, жмём Alt-Enter или Ctrl-.(Ctrl-Ю), выбираем "Извлечь метод"
  4. Настраиваем параметры
  5. Переименовываем метод

Готово, вы восхитительны! Правда, с этим функционалом нужно немножко набить руку, чтобы у вас в метод не передавалась куча аргументов и не было множества аргументов с модификаторами ref и out. Но это дело опыта.

А на этом на сегодня всё! Не забывайте подписываться на мой телеграм-канал, делитесь своими лайфхаками в комментариях и до новых встреч!

-3