在C#中建立程式碼片段 - 定制Visual Studio以提高效率
[[academy-video-youtube({"vid": "rn9p_K9J4yg", "start_time": "0", "title": "在C#中建立程式碼片段 - 自訂Visual Studio以提高效率", "creator": "Tim Corey", "length": "48分鐘46秒"})]]
對於使用C#的開發者來說,重複是一個現實。 從編寫屬性到設定主控台方法以及捕捉例外,有些工作可以更順暢地進行。 這就是程式碼片段的作用—小巧、強大、可重用的程式碼塊,只需使用快捷鍵即可快速插入到您的專案中。
在本文中,我們將探討如何在Visual Studio中建立和使用自定義程式碼片段,由C#專家培訓師Tim Corey指導。 在他關於"在C#中建立程式碼片段 - 自定Visual Studio以提高效率"的影片中,Tim提供了實際操作步驟、評論及範例,您可以直接應用到您自己的專案中。 最後,您將能提高生產力,撰寫更具可讀性的程式碼,並在您的開發工作中實施最佳實踐。
為什麼程式碼片段很重要
Tim首先分享了他經常使用程式碼片段來插入自動屬性、建構函式和foreach迴圈等內容。 他展示了如何輸入cw並按兩次Tab鍵插入Console.WriteLine(),將游標放在括號之間,這是一個輸出字串內容的重要技巧。
但正如他所指出的,並不是每個有用的方法都有內建的程式碼片段。 例如,Console.ReadLine() 缺少一個。 Tim 的回應? 建立您自己的。
在Visual Studio中設置示範專案
為了在情境中進行演示,Tim 在 Visual Studio 中設置了一個 ASP.NET Core Web 應用程式。 儘管專案型別並不重要,但擁有C#和HTML文件可以讓他展示來自這兩種語言的範例。
這是一個重要的提醒:程式片段不限於C#——它們可以應用於Visual Studio支援的多種語言,包括HTML、XAML等。
內建程式碼片段與快捷鍵的威力
Tim展示了一些現有的程式碼片段:
cw + Tab Tab → Console.WriteLine()
ctor + Tab Tab → 建構函式
prop + Tab Tab → 自動實現的屬性(例如,public string Test
{ get; set; })- propfull → 建立具有後備欄位的屬性
這些快捷鍵旨在消除重複並提高性能。 您只需指定像是string或int這樣的型別,以及名稱,然後讓剩餘部分自動生成。
這些內建程式碼片段還可以展示插值、公用等存取修飾符,及系統定義元素,確保您的程式碼遵循一致的結構。
在VS Code中建立您自己的程式碼片段
Tim選擇使用Visual Studio Code而不是程式碼片段生成工具,因為它簡單且提供XML語法高亮顯示。
他建立了一個名為readline.snippet的檔案,並展示了基本的XML結構:
<CodeSnippets>
<CodeSnippet Format="1.0.0">
<Header>
<Title>Console.ReadLine</Title>
<Shortcut>cr</Shortcut>
<Description>Creates Console.ReadLine()</Description>
<Author>Tim Corey</Author>
</Header>
<Snippet>
<Code Language="csharp"><!-- [CDATA[
Console.ReadLine();
]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets><CodeSnippets>
<CodeSnippet Format="1.0.0">
<Header>
<Title>Console.ReadLine</Title>
<Shortcut>cr</Shortcut>
<Description>Creates Console.ReadLine()</Description>
<Author>Tim Corey</Author>
</Header>
<Snippet>
<Code Language="csharp"><!-- [CDATA[
Console.ReadLine();
]]></Code>
</Snippet>
</CodeSnippet>
</CodeSnippets>這是一個基本的片段,使用
Tim 指出,格式是從使用者的 Visual Studio 環境繼承的,這意味著縮排和間距將符合您的設定。
將程式碼片段匯入至Visual Studio
Tim 演示如何使用工具 > 程式碼片段管理器導入一個 .snippet 文件。 他選擇"我的程式碼片段"位置,確保程式碼片段在需要時顯示。
匯入後,鍵入 cr + Tab Tab 插入 Console.ReadLine() 行,準備將其值指定給變數或在異常處理區塊中使用。
可重複使用的文件標頭
接下來,Tim 示範了一段文件片段——這是企業專案或協作團隊中的常見需求。 他使用快捷鍵docme建立一個程式碼段,用於生成註釋塊:
/// Title:
/// Author:
/// Date:
/// Purpose:/// Title:
/// Author:
/// Date:
/// Purpose:這是追踪變更、作者身份和檔案背景的理想選擇。 雖然像Git這樣的工具處理版本控制,但標頭在大型團隊中特別提供了快速的視覺參考。
HTML片段:Bootstrap表單範例
片段不僅僅適用於C#程式碼。 Tim展示如何在HTML中使用它們——這對於建立表單、輸入元素和結構化標籤的集合來說是完美的。
他複製了一個Bootstrap表單範例,並將其包裹在相同的XML片段格式中,將語言更改為html。 匯入後,鍵入快捷方式sampleform會插入一個現成的HTML結構,讓您免於反覆引用外部URL或複製樣板。
包含佔位符和變數的進階程式碼片段
這是事情變得更先進、更強大的地方。 Tim 建立了一個用於檢索配置值的程式碼片段:
_config.GetValue<string>("values:myTest");_config.GetValue<string>("values:myTest");他展示了如何為型別(string, int, bool)和路徑(values:myTest)使用佔位符,這樣開發者只需要填寫不同的部分。
在XML中,他使用:
<Declarations>
<Literal>
<id>ValType</id>
<Default>string</Default>
<ToolTip>Data type of the value</ToolTip>
</Literal>
<Literal>
<id>Path</id>
<Default>values:myTest</Default>
<ToolTip>Config path</ToolTip>
</Literal>
</Declarations><Declarations>
<Literal>
<id>ValType</id>
<Default>string</Default>
<ToolTip>Data type of the value</ToolTip>
</Literal>
<Literal>
<id>Path</id>
<Default>values:myTest</Default>
<ToolTip>Config path</ToolTip>
</Literal>
</Declarations>在片段主體中:
_config.GetValue<$ValType$>("$Path$")_config.GetValue<$ValType$>("$Path$")這種變數和聲明的使用使得程式碼生成具備靈活性、表達力和簡潔性。 它非常適合用於檢索安全設置、存取字典或從JSON文件中讀取巢狀值等任務。
為什麼程式碼片段能提升效能
Tim最後總結道,程式碼片段不僅僅是為了提升速度,它們還促進一致性做法,減少錯誤,並改善整個團隊的程式碼可讀性。 隨著時間推移,即使每個片段節省幾秒鐘,最終也可能節省數小時。
他強調片段有助於:
- 常見任務初始化
使用try-catch-finally的標準化例外處理
建立整個類別範本
- 在finally區塊內工作,結構化的catch區塊和方法覆寫
結論:開發者的優勢
無論您是在構建複雜系統還是簡單應用程式,程式碼片段都能幫助您更快且更一致地編寫C程式碼或C#程式碼。 它們使您能夠:
消除重複
- 專注於業務邏輯
保持乾淨、插值良好且有良好文件的程式碼庫
正如Tim在其詳盡的影片中所建議的,探討您自己的編程習慣。 發現您重複輸入的內容。 然後,決定一種方法:建立一個片段。
您很快就會意識到,您的工作流程已經轉變——使開發更高效、有條理且愉快。
快速入門的程式碼片段點子
tryfinally – 生成 try + finally 區塊
logerror – 使用 Log.Error() 插入日誌邏輯
propnotify - 含有INotifyPropertyChanged的屬性
filecheck – 如果 File.Exists(path) 使用內嵌邏輯
- foreachdict – 遍歷
Dictionary<TKey, TValue>
Tim的提示:不要只是從其他檔案中複製貼上—將其製作成一個程式碼片段,這樣就不必再重新輸入。

