База знаний ЯЮниор
  • C#
    • 🗃️Ссылочные и значимые типы в C# Ключевые слова ref, out, in Что нужно знать новичку
    • 📋Использование констант
    • 🔖Snippet или фрагмент кода
    • 📝Пустые строки
    • 🛡️Инкапсуляция
  • Unity
    • 🚶‍♂️Управление Параметрами Аниматора
    • ⚙️Динамическое изменение объектов
      • 🛠️Создание объектов
      • 🪛Изменение объектов
      • 🪚Добавление и изменение компонентов
      • 🔥Удаление объектов и компонентов
    • 🔊События
      • 🧬Параметризация
      • 🔗Совмещение событий
      • 📡Action и UnityAction
      • 🕹️UnityEvent
    • 🔌Подключение среды разработки к Unity
    • ⌚Корутины
      • 🪄Управление корутинами
      • ⏰Yield Instruction
      • 🕵️‍♂️Как устроены корутины?
  • Git и GitHub
    • 🗃️Git
    • 🗄️GitHub
    • 🖥️GitHub Desktop
Powered by GitBook
On this page
  • Часть 1. Что такое Snippet или фрагмент кода?
  • Часть 2. Создаем свой Snippet или фрагмент кода
  • Часть 3. Модифицируем стандартный Snippet или Фрагмент кода
  • Часть 4. Примеры горячих клавиш для фрагментов кода

Was this helpful?

  1. C#

Snippet или фрагмент кода

Автор: Александр Михновец

PreviousИспользование константNextПустые строки

Last updated 1 year ago

Was this helpful?

Часть 1. Что такое Snippet или фрагмент кода?

Набирая код, очень часто приходится повторять однотипные действия – например набирать по буквам Console.WriteLine();

Со временем начинаем замечать подсказки для быстрого введения кода, которое предлагает IntelliSense

Параметры IntelliSense включены по умолчанию. Чтобы отключить их, перейдите в раздел Сервис > Параметры > Текстовый редактор > Все языки и снимите флажок Сведения о параметрах или Автоматический список участников, если вы не хотите использовать функцию Списка участников.

Потом узнаем, что есть комбинация клавиш для быстрого написания Console.WriteLine(); - cw и 2 раза клавиша Tab, и дело идет гораздо быстрее.

У Microsoft Visual Studio есть целый комплект сниппетов – часто встречающихся комбинаций клавиш для быстрого ввода. Найти их перечень можно в Средства – Диспетчер фрагментов кода или набрав сочетание Ctrl+K, Ctrl+B

Здесь представлены все стандартные сниппеты, которые есть для языка C#.

Т.е. набрав сочетание клавиш, указанное выше, например, for и нажав 2 раза клавишу Tab

Основной скелет цикла for появится в коде и его останется только заполнить:

Обратите внимание, что часть кода, которую надо заменить – сразу подсвечивается. Использование snippet’ов сокращает в разы время набора часто повторяющихся фрагментов кода.

Часть 2. Создаем свой Snippet или фрагмент кода

Освоившись с применением snippet начинаем понимать, что стандартных маловато будет. И нам срочно нужен фрагмент кода для Console.ReadLine(); которого нет в перечне.

Открываем диспетчер фрагментов кода:

Выбираем папку Visual C#:

Копируем путь к папке:

Переходим в указанное место через Проводник / Total Commander / или что там у Вас для этого:

Копируем cw.snippet в новую папку cr, где будем изменять файл под себя. Переименовываем файл в cr.snippet и открываем в текстовом редакторе:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>cw</Title>
            <Shortcut>cw</Shortcut>
            <Description>Фрагмент кода для Console.WriteLine</Description>
            <Author>Microsoft Corporation</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal Editable="false">
                    <ID>SystemConsole</ID>
                    <Function>SimpleTypeName(global::System.Console)</Function>
                </Literal>
            </Declarations>
            <Code Language="csharp"><![CDATA[$SystemConsole$.WriteLine($end$);]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>
  1. В строчке <Code Language="csharp"><![CDATA[$SystemConsole$.WriteLine($end$);]]> заменяем Write на Read и переносим $end$ за точку с запятой. Получаем такую запись: <Code Language="csharp"><![CDATA[$SystemConsole$.ReadLine();$end$]]>

  2. В <Title>cw</Title> меняем на <Title>cr</Title>

  3. В <Shortcut>cw</Shortcut> меняем на <Shortcut>cr</Shortcut>

  4. В <Description>Фрагмент кода для Console.WriteLine</Description>

    меняем на <Description>Фрагмент кода для Console.ReadLine</Description>

  5. Авторство <Author>Microsoft Corporation</Author> меняем на себя любимого <Author>IJunior</Author>

Осталось импортировать новый snippets в Microsoft visual studio.

Средства – Диспетчер фрагментов кода или сочетание Ctrl+K, Ctrl+B:

Язык CSharp, расположение MyCodeSnippets, кнопка Импорт.

Указываем путь к нашему созданному файлу и нажимаем кнопку Открыть.

Переходим в Microsoft Visual Studio, запускаем проект и вводим cr и 2 раза клавишу Tab

Часть 3. Модифицируем стандартный Snippet или Фрагмент кода

Меня не устраивает стандартный snippet cw для Console.WriteLine(), т.к. все время использую интерполяцию. Делать новый фрагмент кода ради добавления в него Console.WriteLine($””) не имеет смысла, поэтому будем модифицировать стандартный snippet.

Для начала сделаем резервное копирование стандартного сниппета cw на случай, если что-то пойдет не так.

Переходим к месту хранения сниппетов и копируем его оттуда в свою отдельную папку резервных копий и папку для препарирования.

Так выглядел код до модификации:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>cw</Title>
            <Shortcut>cw</Shortcut>
            <Description>Фрагмент кода для Console.WriteLine</Description>
            <Author>Microsoft Corporation</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal Editable="false">
                    <ID>SystemConsole</ID>
                    <Function>SimpleTypeName(global::System.Console)</Function>
                </Literal>
            </Declarations>
            <Code Language="csharp"><![CDATA[$SystemConsole$.WriteLine($end$);]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

Так после модификации:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>cw</Title>
            <Shortcut>cw</Shortcut>
            <Description>Фрагмент кода для Console.WriteLine</Description>
            <Author>OldBeliever</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal Editable="false">
                    <ID>SystemConsole</ID>
                    <Function>SimpleTypeName(global::System.Console)</Function>
                </Literal>
                <Literal Editable="false">
                    <ID>Interpolation</ID>
                    <Function>SimpleTypeName($)</Function>
                </Literal>
            </Declarations>
            <Code Language="csharp"><![CDATA[$SystemConsole$.WriteLine($Interpolation$"$end$");]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

Единственной загвоздкой было выведение знака $, который воспринимался, как внутренняя команда. Пришлось сделать для него отдельный литерал.

Добавил строчки:

<Literal Editable="false">
    <ID>Interpolation</ID>
    <Function>SimpleTypeName($)</Function>
</Literal>

Изменил:

<Code Language="csharp"><![CDATA[$SystemConsole$.WriteLine($end$);]]>

На

<Code Language="csharp"><![CDATA[$SystemConsole$.WriteLine($Interpolation$"$end$");]]>

Часть 4. Примеры горячих клавиш для фрагментов кода

  • сс - Console.Clear();

  • cr - Console.ReadLine();

  • crk - Console.ReadKey();

  • cw - Console.WriteLine($"");

  • cww - Console.WriteLine($"{}");

🔖
IntelliSense предлагает дополнить текст до "Console"
IntelliSense предлагает дополнить текст до "Console.WriteLine"
Этот значок указывает на snippet (в английской редакции) или фрагмент кода (в русской редакции)
Диспетчер фрагментов кода в меню
Выбираем опцию CSharp
Папка Visual C#