跳過到頁腳內容
Iron Academy Logo
C#工具與生產力

在C#中創建代碼片段 - 自定義Visual Studio提高效率

Tim Corey
48m 46s

對於使用C#的開發者來說,重複是一個現實。 從撰寫屬性到設置控制台方法和捕獲異常,某些任務可以簡化。 這就是程式片段的用武之地—小型、強大、可重複使用的程式碼塊,您只需通過快捷鍵即可快速插入到專案中。

在本文中,我們將探討如何在Visual Studio中創建和使用自定義的程式片段,由C#專家導師Tim Corey指導。 在他的影片中"Creating Code Snippets in C# – Customize Visual Studio for Efficiency",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,一個名稱,其他的讓它自動生成。

這些內置的片段還可以展示插值、存取修飾符如public和系統定義元素—確保您的代碼遵循一致的結構。

在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>

這是一個基本的片段,使用<![CDATA[]]>包裹原始的C#代碼。 快捷鍵cr現在觸發Console.ReadLine()方法的插入,雙按Tab鍵。

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結構,省卻了反覆參考外部URLs或複製樣板的麻煩。

帶有佔位符和變數的進階片段

這是事情變得更高級且更強大的地方。 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 – If File.Exists(path)與內聯邏輯

  • foreachdict – 對Dictionary<TKey, TValue>進行循環

Tim的提示:不要只是從其他文件複製貼上—把它做成一個片段,永遠不再重寫。

Hero Worlddot related to 在C#中創建代碼片段 - 自定義Visual Studio提高效率
Hero Affiliate related to 在C#中創建代碼片段 - 自定義Visual Studio提高效率

通過分享您所愛的東西賺得更多

您是否在為使用.NET、C#、Java、Python或Node.js的開發者創建內容?將您的專業知識轉化為額外收入!

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我