C# 格式化(formatter)在 VS Code 中的選擇

程式碼的世界裡,有一個古老的爭論:
大括號 { 到底該放在同一行,還是獨立成一行?
這不只是排版問題,有時甚至會演變成團隊會議上的「宗教戰爭」。而我自己也有喜歡的indent style,如果看到團隊中其他人的寫法和我不同,雖不至於惱怒,但總覺得有些彆扭。有一種衝動很想把它全部改成自己習慣的方式。
你大概可以想像,當有一天,我發現 VS Code 升級到新版之後,排版和對齊方式竟然變成和我喜歡的不同,那時候我有多麼的震驚,一整天都想要把它給改回來。
怎麼做?
今天我們就來談談,如何在 VS Code 裡改設定,讓 { 的排版聽話。
兩種常見風格
先來看看範例:
1. K&R (大括號跟在同一行)
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,
就能讓 { 聽話,乖乖站到你想要的位置。
至於我,我喜歡 { 獨立成一行的那種排法,你呢?
留言