Visual Studio 2019之讓我們統(tǒng)一代碼風(fēng)格吧
問題
在之前介紹VS2019的一鍵清理的文章當(dāng)中,我們提到了一個問題,即Apply implicit/explicit type preferences到底是使用哪一個呢?
Apply implicit/explicit type preferences?到底用哪一個呢
首先我們來看一下,這條規(guī)則是用來解決什么問題的。下面的兩條代碼中,你比較喜歡那種風(fēng)格呢?

Implicit & Explicit Type
第一行代碼是explicit type,第二行代碼是implicit type。這里不對這兩種風(fēng)格的優(yōu)劣進行討論,因為不同的人可能有不同的喜好。知道了二者的區(qū)別之后,我們看一看Apply implicit/explicit type preferences的fix結(jié)果是什么樣子的?默認(rèn)的執(zhí)行結(jié)果如下圖所示:

VS2019默認(rèn)Apply Explicit type
通過實驗可以看出,代碼清理默認(rèn)將implicit type轉(zhuǎn)換為了explicit type。原因是什么呢?這就涉及到今天我們要討論的問題,VS2019之代碼風(fēng)格 (Code Style)。本文不對代碼風(fēng)格進行討論,請根據(jù)自己或團隊的開發(fā)習(xí)慣制定代碼風(fēng)格。
Code Style設(shè)置
· Ctrl+Q,輸入"C# code style",會打開下面的對話框。對Ctrl+Q不了解的小伙伴可以看看之前我的文章, Visual Studio 2019之你還在手工清理代碼嗎?
可以看到,VS2019將explicit type設(shè)置為了默認(rèn),這也是為什么我們上面的演示當(dāng)中,var會被一鍵修改為int類型。你可以在這里將"Prefer explicit type"改為"Prefer 'var'"(如下圖所示),那么int會被自動修改為var類型
VS2019給出了許多Preferences設(shè)置,并給出了代碼對相應(yīng)的設(shè)置進行了解析。C#開發(fā)可以根據(jù)自己的需要進行設(shè)置。
Code Style的嚴(yán)重等級
除了可以設(shè)置我們更喜歡哪種代碼風(fēng)格之外,還可以設(shè)定如果違反了這種代碼風(fēng)格那么VS2019會給出什么相應(yīng)的反饋。相應(yīng)的級別有
- Refactoring Only
- Suggestion
- Warning
- Error
如下圖所示。
設(shè)置嚴(yán)重等級
如果我們將"Prefer compound assignments"設(shè)置為"Error",那么下面的代碼中就會出現(xiàn)Error的提示,如下圖所示。此時點擊下圖中的"Use compound assignment",VS會自動將代碼改為compound的模式。
沒有使用compound assignments會被當(dāng)做錯誤
從UI到文件
進行團隊開發(fā)的小伙伴可能已經(jīng)想到,如果我們能夠把這些UI設(shè)置保存在文件當(dāng)中,那么就有可能在團隊當(dāng)中通過共享這個文件來統(tǒng)一代碼風(fēng)格。VS2019為我們提供了這個功能。
導(dǎo)出UI設(shè)置到文件
點擊上圖的"Generate .editorconfig file from settings",可以根據(jù)你的UI配置生成一個配置文件。默認(rèn)存在你項目的根目錄。打開這個文本文件,可以看到剛才的設(shè)置:
Code Style配置文件
有了這個文件之后,可以將它同源代碼文件一樣保存在代碼管理平臺,比如Git。這樣整個團隊就能夠確保代碼風(fēng)格一致了。