使用 Visual Studio 開發,你不能錯過的 Quick Action 及 Code Snippet

2020-07-01

不同於以往覺得 Intellisense 就是一切的想法,Quick Action 以及 Code Snippet 重新塑造自己對於 Visual Studio 編輯程式碼過程的方法,原本一直覺得要花錢買 ReSharper 才能得到那種行雲流水的開發體驗,但 Visual Studio 2019 原生所支援的 Quick Action 就已經非常好用,本篇筆記用以紀錄如何以 Quick Action 以及 Code Snippet 來進行開發。

logo

快速開發的技巧

產生 Static Void Main

sim + tab + tab

static int Main(string[] args)
{
    return 0;
}

產生類別 (Create Class)

原本的開發情境都是因為要使用類別,所以先建立類別,並設定欄位、屬性、方法。但 Quick Action 支援自動產生類別,所以開發流程可以變成先使用在建立類別。例如以下情境需要一個 Person Class 並且有 Age, Name, Gender 三個 Property。

Person person = new Person { Age = 30, Name = "Ryan", Gender = "Male" };

直接在 new Person 按下 alt + Enter 選擇 「產生 Class Person」,完成後程式碼會自動加入:

internal class Person
{
    public int Age { get; set; }
    public string Name { get; set; }
    public string Gender { get; set; }
}

而如果想要先產生類別的話,可以先輸入存取修飾子 (public, private, interal) 再輸入 class 接著打三次 prop 來產生 Property。

現在的速度完全大增,當然這犧牲了在初始化物件時候 Intellisense 提示的優點,兩者方式各有優缺,但這種新開發方式仍是非常過癮 😍

產生類別中的方法 (Create Method)

同樣地如果想要新增一個新的方法,可以先呼叫方法,再創造。

person.Program("C#", 0x20, new List<string> { "VS", "LinqPad", "ReSharper"});

直接在 GetFullName 按下 alt + Enter 選擇 「產生方法 Person.Program」,完成後程式碼會自動加入:

internal void Program(string v1, int v2, List<string> list)
{
    throw new NotImplementedException();
}

覆寫抽象類別的方法 (Override Abstract Class Method)

還在複製貼上或者手動重刻嗎?只要在實作 Abstract Class 的類別大括弧內空白處按下 Alt + Enter,並選擇產生覆寫,即會出現 UI 選單供選擇,於是 Override Method 從此就是一件愜意的事情了。

空白處按下 Alt + Enter 並選擇產生覆寫

UI 介面

修正程式碼的錯誤 (Actions that fix errors)

可以修正拼錯字 (typo, misspelled symbol or keyword) 以及處理 git merge conflict

移除不必要的程式碼 (Actions that remove unnecessary code)

移除不必要的 usings/Imports (這點和 CodeMaid 相同),另可以移除不不要的轉型 (cast)

int number = (int)3;

// Remove Unnecessary Cast

int number = 3;

最後則是可以移除沒有使用到的變數。

加入缺少的程式碼 (Actions that add missing code)

  • 加入缺少的 usings/imports, reference assemblies, NuGet packages
  • ⭐️自動將 enum 轉為 switch 的 case 並補充 default 及 break
enum MyEnum
{
    Item1,
    Item2,
    Item3
}

switch (MyEnum)
{
}

直接在 switch 按下 alt + Enter 選擇 「新增遺漏的案例」,完成後程式碼會自動加入:

switch (MyEnum)
{
    case MyEnum.Item1:
        break;
    case MyEnum.Item2:
        break;
    case MyEnum.Item3:
        break;
}
  • 自動對參數檢查 null checks
  • 替引述加入名稱
  • 替 single-line if 加入 braces
  • 加入缺少的 modifiers

小結

以上僅羅列 Quick Action 及 Code Snippet 一部分的應用情境,總之在開發時 Alt + Enter 以及 Tab + Tab 會是你的好幫手。

參考資料