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
就能讓 { 聽話,乖乖站到你想要的位置。

至於我,我喜歡 { 在獨立一行的排法,你呢?

留言

這個網誌中的熱門文章

使用LM Studio輕鬆在本地端以API呼叫大語言模型(LLM)

開啟 teams 中的『會議轉錄(謄寫)』與Copilot會議記錄、摘要功能

原來使用 .net 寫個 MCP Server 如此簡單

關於 SSO 登出的那些事:Google、Microsoft、LINE 開發者必讀差異

VS Code的字體大小