前言
Zam 試過幾種 IDE 來開發 C++ Project,諸如 Sublime、Dev C++、Qt Creator 但都不是太好用,而且在 coding style 的調整實在都不滿意。但後來遇到了 VSCode 跟其 Extension C/C++ for Visual Studio Code,雖不能說滿意,但至少 Coding format 是沒有問題了。
如何客制化自己的 coding style rule
在這之前請先安裝 VSCode 跟 Extension C/C++ for Visual Studio Code
選擇你要的格式
選擇連結: Clang Format Style Options(之後有人敲碗再幫大家翻譯)
推薦幾個我喜歡的設定參數
- BasedOnStyle:看你喜歡哪個流派囉
LLVM A style complying with the LLVM coding standards
Google A style complying with Google’s C++ style guide
Chromium A style complying with Chromium’s style guide
Mozilla A style complying with Mozilla’s style guide
WebKit A style complying with WebKit’s style guide
Microsoft A style complying with Microsoft’s style guide
- IndentWidth:在程式裡面空幾格
IndentWidth: 4void f() {
someFunction();
if (true, false) {
f();
}
}
- ColumnLimit:每一行的最大字數,設定 0 代表無限制
- SpacesBeforeTrailingComments: 程式碼後的註解前空格
SpacesBeforeTrailingComments: 3
void f() {
if (true) { // foo1
f(); // bar
} // foo
}
- DerivePointerAlignment:將
&
跟*
這兩個 pointer,以文件出現率最高的格式為主,格式化後檔案內全部都會變成頻率最高那個一樣 - Cpp11BracedListStyle:就是
{}
這個的空格問題
true: false:
vector<int> x{1, 2, 3, 4}; vs. vector<int> x{ 1, 2, 3, 4 };
vector<T> x{{}, {}, {}, {}}; vector<T> x{ {}, {}, {}, {} };
f(MyMap[{composite, key}]); f(MyMap[{ composite, key }]);
new int[3]{1, 2, 3}; new int[3]{ 1, 2, 3 }
- PointerAlignment:有三種 Left、Right、Middle
// Left
int* a;// Right
int *a;// Middle
int * a;
- AccessModifierOffset:自動幫
public:
等等空行
修改設定
STEP 1 前往 Preferences -> Settings
STEP 2–1 搜尋 C_Cpp.clang_format_fallbackStyle
STEP 2–2 或者也可以直接改 setting.json
路徑
Windows
%APPDATA%\Code\User\settings.json
macOS
$HOME/Library/Application Support/Code/User/settings.json
Linux
$HOME/.config/Code/User/settings.json
STEP 3 將你想要的參數加進去,基本上 Google style 已經滿好用了,但還是可以做一點屬於自己的調整
修改這個欄位,原本應該是 Visual Studio
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 0}"
以下為成果