工欲善其事必先利其器,而 Visual Studio 就是我们的开发利器。

上一篇文章,介绍了一个很棒的快捷键,如果你还没用过这个快捷键,看完之后应该会豁然开朗。如果你已经熟练的应用它,也会温故而知新。

这篇文章,介绍一下 VS里的 代码片段(Code snippet)。

1. 介绍

Code snippet 为可重用的代码片段, 相信使用 VS 的开发者都会经常的使用内置的代码片段,如 class、ctor、prop、if、else、switch、for、foreach、while、using 等。

它会定义一个代码片段,并包含着几个变量,有其默认值。我们可以通过tab键在这些变量之间跳动修改,最终修改为我们想要写的代码。

虽然使用这些基础的代码片段已经可以很舒服了,但或许我们还可以更舒服一些。

比如说我们写代码时总是会定义一些方法,需要写很多的部分 如:访问修饰符、返回值、方法名、参数、方法体大括号,等等。 步骤多且麻烦,还需要多次敲击空格。如果使用自定制的代码片段,就可以大大提升我们写方法的效率。

而现在的方法多为异步方法,需要加async关键字,返回值需要是Task<T>类型,方法名称一般用Async为后缀。我们可以再定制一个代码片段来阻止这些重复。

不知道细心的读者有没有看到,还自动引用了 System.Threading.Tasks 这个命名空间呢?

而在我们实际的开发中,很多的代码会有一些固定的结构,比如说仓储,借用代码片段可以快速写一个 Service 接口。这里借用了 Blog.Core项目来演示。

2. 制作

在我们编码的时候,任何会让我们重复的代码,都可以作为代码片段抽取出来,而它的制作也非常简单。只需4步,而前三步,也仅仅是准备工作,只需做一次就够了。以后就可以专注于对代码片段的增加修改与删除。

1. 首先我们需要创建一个文件夹,来存放我们要定制的代码片段。如:CodeSnippetsCSharp

2. 将此文件夹添加到  工具 > 代码片段管理器中。快捷键为 [ctrl+k,b]

3. 如果是 VS 2019则需要重启,VS2017 则不需要。其他版本没有进行测试。

4. 开始制作 code snippet。

它的本质是一个 xml文件,只需要复制已有的代码片段,然后进行部分修改,保存为.snippet文件到刚创建的文件夹 CodeSnippetsCSharp 之中,就可以直接在VS 之中使用了

以我写的 methodAsync代码片段为例:各个节点已经用注释进行标注,其中***为重要的节点,而大部分节点是可选的,可有可无。可以直接复制下面的代码,进行修改,作为代码片段的模板。

 1 <?xml version="1.0" encoding="utf-8" ?>
2 <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
3 <CodeSnippet Format="1.0.0">
4 <Header>
5 <Title>methodAsync</Title> <!-- 标题,必须的。-->
6 <Shortcut>methodAsync</Shortcut> <!-- ***快捷键名称,是在VS里输入的,重要!-->
7 <Description>Code snippet for an async method</Description><!-- 描述,可选,不重要 -->
8 <Author>jinyafeng</Author> <!--作者,可选,不重要。 -->
9 <SnippetTypes> <!--片段类型,可选,不重要。 -->
10 <SnippetType>Expansion</SnippetType> <!--代表基本类型,代码片段直接插入光标处,还有其他类型,如SurroundsWith,会把你选择的代码片段包进去,不好用不推荐。-->
11 </SnippetTypes>
12 </Header>
13 <Snippet>
14 <Declarations> <!--可以定义多个变量。-->
15 <Literal> <!--单个变量的定义-->
16 <ID>accessbility</ID> <!--***变量名称,重要!-->
17 <ToolTip>Accessbility</ToolTip> <!--提示,可选,不重要-->
18 <Default>public</Default><!--默认的文本值,可选,但有用。-->
19 </Literal>
20 <Literal>
21 <ID>return</ID>
22 <ToolTip>Return Type</ToolTip>
23 <Default>int</Default>
24 </Literal>
25 <Literal>
26 <ID>method</ID>
27 <ToolTip>Method name</ToolTip>
28 <Default>MyMethod</Default>
29 </Literal>
30 <Literal>
31 <ID>parameter</ID>
32 <ToolTip>Parameter name</ToolTip>
33 <Default></Default>
34 </Literal>
35 </Declarations>
36 <!--***核心定义阶段,其中 <![CDATA[]]> 是固定的格式。无需关心,真正关心的是里面的[]的内容,为变量+文本,而变量用双$$表示。-->
37 <!-- Language 选择对应的语言,目前支持 VB,CSharp,CPP,XAML,XML,JavaScript,TypeScript,SQL,HTML-->
38 <!--$end$ 是一个特殊变量,代表着按回车键 回到的地方,以继续写代码。-->
39 <Code Language="csharp"><![CDATA[$accessbility$ async Task<$return$> $method$Async($parameter$)
40 {
41 $end$
42 }
43 ]]>
44 </Code>
45 <Imports> <!--要导入的命名空间列表。可选。-->
46 <Import> <!--单个命名空间导入定义,如果当前文件已经导入,则不会重新导入。-->
47 <Namespace>System.Threading.Tasks</Namespace>
48 </Import>
49 </Imports>
50 </Snippet>
51 </CodeSnippet>
52 </CodeSnippets>

3. 最后

以上所有代码片段均以放到了 github上,可以进行下载查看。https://github.com/jinyafeng/CustomCodeSnippetsCSharp

我们在日常的编码过程中,习惯对重复的代码进行封装,然后各个地方重用。但对于编写代码本身,也是可以进行封装与重用的,你有思考过吗?

VS里的 代码片段(Code snippet)很有用,制作也很简单的更多相关文章

  1. Visual Studio 如何使用代码片段Code Snippet提高编程速度!!!

      使用Code Snippet简化Coding 在开发的项目的时候,你是否经常遇到需要重复编写一些类似的代码,比如是否经常会使用 for.foreach ? 在编写这两个循环语句的时候,你是一个字符 ...

  2. Sublime Text自定制代码片段(Code Snippets)

    在编写代码的整个过程中,开发人员经常会一次又一次的改写或者重用相同的代码段,消除这种重复过程的方法之一是把我们经常用到的代码保存成代码片段(snippets),这使得我们可以方便的检索和使用它们. 为 ...

  3. Xcode10 代码块(Code Snippet)添加和删除

    https://blog.csdn.net/lg767201403/article/details/82761448 Code Snippets 使用 https://blog.csdn.net/lv ...

  4. sublime text 2代码片段(Snippet)功能的使用

    “snippet”在英语里面是“片段”的意思.当我们编码时候,通常想要打几个简略的字符串,就出来一些固定的模板. 例如:使用snippet在新建文件时快速生成HTML头部信息等. 定义很简单,菜单:t ...

  5. VS自定义代码块Code Snippet

    一  .简述 我们在开发当中,避免不了一些重复的开发工作,在你漫长的开发以及学习当中,你会发现有这么一部分代码是你时常会使用到的.我想这个工具也是针对这个原因出来的吧,它就是预先把你需要的这部分代码的 ...

  6. CKEditor 4.4.1 添加代码高亮显示插件功能--使用官方推荐Code Snippet插件

    随着CKEditor4.4.1的发布,以前一直困扰的代码高亮问题终于完美的得到解决,在CKEditor4.4中官方发布了Code Snippet这个代码片段的插件,终于可以完美的内嵌使用代码高亮了,以 ...

  7. [搬运] 将 Visual Studio 的代码片段导出到 VS Code

    原文 : A Visual Studio to Visual Studio Code Snippet Converter 作者 : Rick Strahl 译者 : 张蘅水 导语 和原文作者一样,水弟 ...

  8. Sublime Text3—Code Snippets(自定义代码片段)

    摘要 程序员总是会不断的重复写一些简单的代码片段,为了提高编码效率,我们可以把经常用到的代码保存起来再调用. 平时用sublime安装各种插件,使用Tab键快速补全,便是snippets(可译为代码片 ...

  9. sublime自定义snippet代码片段

    相信很多人喜欢sublime编辑工具有两个原因:第一sublime很轻巧方便:第二sublime提供很多自定义拓展功能,包括很简单且和很好用的代码片段功能snippet文件. 今天,在这里就介绍下su ...

随机推荐

  1. 攻防世界 reverse babymips

    babymips   XCTF 4th-QCTF-2018 mips,ida中想要反编译的化需要安装插件,这题并不复杂直接看mips汇编也没什么难度,这里我用了ghidra,直接可以查看反编译. 1 ...

  2. 3、MyBatis教程之CURD操作

    4.CURD操作 1.查询 根据用户 Id查询用户 在UserMapper中添加对应方法 public interface UserMapper { List<User> getUserL ...

  3. frp实现内网穿透

    frp实现内网穿透 目标 通过外网访问内网设备,本文中实现通过手机的移动流量,可以访问到树莓派设备 设备准备 需要被访问的设备(本文中使用Raspberry Pi`).公网IP设备(本文中使用阿里云 ...

  4. 【故障公告】阿里云 RDS SQL Server 数据库实例 CPU 100% 引发全站故障

    非常抱歉,今天 8:48 开始,我们使用的阿里云 RDS SQL Server 数据库实例突然出现 CPU 100%  问题,引发全站故障,由此给您带来麻烦,请您谅解. 发现故障后立即进行主备切换,和 ...

  5. HTML(二):HTML常用标签(上)

    标签语义 学习标签是有技巧的,重点是记住每个标签的语义.简单理解就是指标签的含义,即这个标签是用来干嘛的. 根据标签的语义,在合适的地方给一个最为合理的标签,可以让页面结构更清晰. 标题标签<h ...

  6. Dynamics CRM制作报表的时候让用户可以用自己的权限浏览数据

    我们做SSRS报表的时候最头疼的问题就是用Sql查出来的数据都是全部数据没有做权限过滤,导致不同用户看到的数据是一样的. 确实Dynamics CRM产品的数据库时有对这个做处理的,其中每个实体都会有 ...

  7. 结对编程_stage2

    项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 结对项目-第二阶段 我在这个课程的目标是 从实践中学习软件工程相关知识(结构化分析和设计方法.敏捷开发方法. ...

  8. 将 Python 打包的 exe 进行反编译

    Python 打包成 exe 之后,是否能从二进制文件中恢复出源代码?没有加密的话是可以的. 首先需要解包. 直接从 github 上下载就行:https://github.com/counterce ...

  9. Idea使用指南--实用版

    idea使用指南--基础配置: 视频链接:https://www.bilibili.com/video/av21735428/?p=1 idea安装: 快捷方式create destop shortc ...

  10. LAMP架构上线动态网站WordPress

    第一步,一键安装LAMP架构所需要的程序 yum install -y httpd mariadb-server php php-mysql 第二步,配置httpd,修改主配置文件/etc/httpd ...