0%

【生產力】Code Snippet

#什麼是Code Snippet

從字面來看是程式碼片段,如果已經寫程式一段時間應該都有用到過,例如在Visual Studio打上Switch後按兩下Tab自動產生的程式碼就是Code Snippet功能做出來的。

/images/20180711/1.png

/images/20180711/2.jpg

所以將常常重複寫的程式碼做成Code Snippet是一件很方便的事情

#如何自訂

因為寫單元測試常常需要寫3A原則,所以把它做成Code Snippet就可以重用。

1
2
3
4
5
6
7
8
//// arrange
var sut = GetSystemUnderTest();
var expected = true;

//// act
var actual = sut.DoSomething();

//// assert

建立3A Pattern.snippet的檔案

打開一個記事本命名成3A Pattern,然後副檔名儲存成.snippet

撰寫內容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
<Title>你的Code Snippet名稱</Title>
<Author>Steven</Author>
<Description>
</Description>
<HelpUrl>
</HelpUrl>
<Shortcut>你想要呼叫時的代碼</Shortcut>
</Header>
<Snippet>
<Declarations>
<Literal Editable="true">
<ID>變數ID</ID>
<ToolTip>變數描述</ToolTip>
<Default>預設值</Default>
<Function>
</Function>
</Literal>
</Declarations>
<Code Language="csharp" Delimiter="$"><![CDATA[
......
放入程式碼的地方
......
]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

依據上面的Template,將3A Pattern Code Snippet改成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
<Header>
<SnippetTypes>
<SnippetType>Expansion</SnippetType>
<SnippetType>SurroundsWith</SnippetType>
</SnippetTypes>
<Title>3A Pattern</Title>
<Author>Steven</Author>
<Description>
</Description>
<HelpUrl>
</HelpUrl>
<Shortcut>aaa</Shortcut>
</Header>
<Snippet>
<Declarations>
<Literal Editable="true">
<ID>expected</ID>
<ToolTip>expected</ToolTip>
<Default>true</Default>
<Function>
</Function>
</Literal>
<Literal Editable="true">
<ID>DoSomthing</ID>
<ToolTip>DoSomthing</ToolTip>
<Default>DoSomething()</Default>
<Function>
</Function>
</Literal>
</Declarations>
<Code Language="csharp" Delimiter="$"><![CDATA[
//// arrange
var sut = GetSystemUnderTest();
var expected = $expected$;

//// act
var actual = sut.$DoSomthing$;

//// assert
]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>

$變數$ , 兩個前字號中間的就是變數ID,在Snippet > Declarations > Literal 設定變數相關值

#匯入Visual Studio

最後一步就是匯入Visual Studio中,點擊工具 > 程式碼片段管理員

/images/20180711/4.jpg

點擊匯入,選擇剛剛的3A Pattern.snippet檔案

/images/20180711/5.jpg

匯入到My Code Snippets > 完成 ,就可以看到3A Pattern了

/images/20180711/6.jpg

/images/20180711/7.jpg

#結果

在程式碼中打aaa加兩次Tab就會呼叫出我們設定的Code Snippet

/images/20180711/8.jpg

/images/20180711/9.jpg