在學習C++的過程中發現編碼規則(coding style rule)十分混亂,所以下面建立一個自己習慣的編碼規則。
原本只想直接用Google C++編碼準則,但發現有些規則和我過去學習Java和Go的命名規則差異許多,而且許多命名規則混用,有的是lower_snake_case
如變數、成員變數、存取函式;有的命名要加上前綴字如k開頭頭的常數、列舉項目;有的要加上後綴如類別成員變數要底線結尾;有的是UppserCamelCase
命名如類別、列舉函式。
總之覺得非常混亂也很討厭使用底線的命名,還有些不習慣的排版風格如縮排等,或許已習慣Java和Go的命名方式,所以這邊的C++命名規則多參考Java或Go的方式。
檔案命名 File Names
檔案以alllowercase
命名。
myfile.cpp
myheaderfile.h
型別命名 Type Names
型別以UpperCamelCase
(PascalCase
)命名,包括類別(class)、結構(struct)、union、列舉(enums)、型別別名(type alias)。
class MyClass {...};
struct MyStruct {...};
union MyUnion {...};
enum MyEnum {...};
using MyTypeAlias = ...;
變數命名 Variable Names
本地變數及全域變數以lowerCamelCase
命名。
int globalVar;
int main() {
int localVar;
...
}
成員變數(屬性)命名 Data Member Names
private的屬性lowerCamelCase
命名。public的屬性UpperCamelCase
命名。
class MyClass {
private:
attrInt;
public:
AttrInt;
};
struct的成員變數預設為public所以用UpperCamelCase
命名。
class MyStruct {
AttrInt;
};
列舉項目命名 Enumerator Names
列舉中的列舉項目以UPPSER_SNAKE_CASE
。
enum MyEnum {
ENUMERATOR_1;
ENUMERATOR_2;
};
常數命名 Constant Names
常數以UPPER_SNAKE_CASE
命名。
const int MY_CONST = 100;
函式命名 Function Names
函式以UpperCamelCase
命名。
void MyFunc() {...}
函式參數命名 Function Parameter Names
函式參數以lowerCamelCase
命名。
void MyFunc(int paramInt, string paramString) {...}
命名空間 Namespace Names
命名空間以alllowercase
命名。
namespace mynamespace {
...
}
單行註解 Single Line Comments
使用單行註解//
在後空一格加上敘述。註解前有程式碼則空一格。若註解有多行則用多行註解/* ... */
。
// 這是單行註解
int num; // 這是單行註解
多行註解 Multi Line Comments
多行註解/* ... */
的註解的開頭與結尾保持空行,註解文字縮排。多行註解不可用於程式碼後。
/*
多行註解
多行註解
*/
縮排空格 Indention Spaces
縮排空格一律用4格空白(spaces),禁用tabs。
int MyFunc(int paramInt) {
if (paramInt < 0) {
return parmInt;
}
...
}
大括弧 Curly Brace
大括弧左括弧{
不可獨立一行,前面空一格;若有換行則右括弧}
獨立一行。
class MyClass {
...
};
void MyFunc() {...}
If-Else 條件式 If-Else Condition
if
與後面判斷式括弧()
空一格,總是使用大括弧。
else
與前後的大括弧空一格。
if (...) {
...
} else {
...
}
未完待續...。
沒有留言:
張貼留言