C# 格式化(formatter)在 VS Code 中的選擇
程式碼的世界裡,有一個古老的爭論:
大括號 {
到底該放在同一行,還是獨立成一行?
這不只是排版問題,有時甚至會演變成團隊會議上的「宗教戰爭」。而我自己也有喜歡的風格,如果看到團隊中其他人的寫法和我不同,雖不至於惱怒,但總覺得有些彆扭。有一種衝動很想把它全部改成自己習慣的方式。
你大概可以想像,當有一天,我發現 VS Code 升級到新版之後,排版和對齊方式竟然後我喜歡的不同,那時候我有多麼的震驚,一整天想要把它給改回來。
怎麼做?
今天我們就來談談,如何在 VS Code 裡改設定,讓 {
的排版聽話。
兩種常見風格
先來看範例:
1. K&R / One True Brace Style(大括號跟在同一行)
public class HelloWorld {
public void SayHello() {
if (true) {
Console.WriteLine("Hello, world!");
}
}
}
2. Allman Style(大括號獨立一行)
public class HelloWorld
{
public void SayHello()
{
if (true)
{
Console.WriteLine("Hello, world!");
}
}
}
各自的優缺點
-
同一行風格 (K&R)
✔ 節省垂直空間,檔案比較短。
✔ 很多 C# 官方範例和文件都是這種格式。
✘ 有人覺得程式「擠在一起」,閱讀時容易忽略{
。 -
獨立一行風格 (Allman)
✔ 大括號醒目,結構一眼就能看出來。
✔ 不容易漏掉對應的{
與}
。
✘ 程式會「變胖」,多佔幾行。
👉 簡單說:前者像極簡主義,後者像穿寬鬆衣服,空間感十足。
你是哪一派呢?
在 VS Code 裡如何調整?
方法一:.editorconfig
(推薦)
在專案或解決方案根目錄新增 .editorconfig
檔案:
root = true
[*.cs]
csharp_new_line_before_open_brace = all
root = true
→ 告訴編輯器不要往上層資料夾再找設定。csharp_new_line_before_open_brace = all
→ 所有{
都換到新的一行。
如果你改成 none
,則所有 {
都會跟在同一行。
方法二:.omnisharp.json
如果你用的是 OmniSharp(C# 擴充套件),也可以在專案根目錄加 .omnisharp.json
:
{
"FormattingOptions": {
"NewLinesForBracesInTypes": true,
"NewLinesForBracesInMethods": true,
"NewLinesForBracesInProperties": true,
"NewLinesForBracesInAccessors": true,
"NewLinesForBracesInControlBlocks": true,
"NewLinesForBracesInAnonymousMethods": true,
"NewLinesForBracesInLambdaExpressionBody": true
}
}
這樣就能精細控制:class、method、if… 等場景要不要換行。
如何確認用的是哪個 Formatter?
在 VS Code 打開 .cs
檔 → 按 Shift+Alt+F
→ 選 Format Document With…
-
如果看到 C# (OmniSharp) → 用的是 Roslyn formatter,會吃
.editorconfig
/.omnisharp.json
。 -
如果看到 C# FixFormat → 那就是第三方 formatter,要去
settings.json
改。
小結
大括號風格沒有對錯,只有「習慣」和「團隊共識」。
有人覺得「少一行看起來清爽」,有人覺得「多一行比較安心」。
不過好消息是 —— 在 VS Code 裡,只要一個 .editorconfig
,
就能讓 {
聽話,乖乖站到你想要的位置。
至於我,我喜歡 { 在獨立一行的排法,你呢?
留言