统一命名规则
?1. #define 保護
所有頭文件都應該使用 #define 防止頭文件被多重包含, 命名格式當是:<PROJECT>_<PATH>_<FILE>_H_
項目?SkinTK中的頭文件 SkinTK/SkinTK/targetver.h 可按如下方式保護:
#ifndef SKINTK_SKINTK_TARGETVER_H_ #define SKINTK_SKINTK_TARGETVER_H_#endif//SKINTK_SKINTK_TARGETVER_H_2. 函數參數的順序
定義函數時, 參數順序依次為: 輸入參數, 然后是輸出參數.
?
3.cpp#include順序
<1>本CPP對應的.h
<2>C系統文件
<3>C++系統文件
<4>其他庫的.h文件
<5>本項目的.h文件
?
4.使用靜態成員函數或名字空間內的非成員函數, 盡量不要用裸的全局函數.以免污染全局作用域.
?
5.將函數變量盡可能置于最小作用域內, 并在變量聲明時進行初始化.應使用初始化的方式替代聲明再賦值
?
6.禁止使用 class 類型的靜態或全局變量: 它們會導致很難發現的 bug 和不確定的構造和析構函數調用順序.
?
7.僅當只有數據時使用 struct, 其它一概使用class.
8.在類中使用特定的聲明順序: public: 在private: 之前, 成員函數在數據成員 (變量) 前;
9.類中的聲明順序:
每個區段內的聲明通常按以下順序:
- typedefs 和枚舉
- 常量
- 構造函數
- 析構函數
- 成員函數, 含靜態成員函數
- 數據成員, 含靜態數據成員
- 聲明次序: public -> protected -> private;
10.所有按引用傳遞的參數必須加上 const
void Foo(const string &in, string *out);?
11.
函數命名, 變量命名, 文件命名應具備描述性; 不要過度縮寫. 類型和變量應該是名詞, 函數名可以用 “命令性” 動詞.
int num_errors; // Good. int num_completed_connections; // Good.?
12.變量命名:
變量名一律小寫, 單詞之間用下劃線連接. 類的成員變量以下劃線結尾, 如:
string table_name; // OK - uses underscore. string tablename; // OK - all lowercase.Warning
string tableName; // Bad - mixed case. 全局變量:對全局變量沒有特別要求, 少用就好, 但如果你要用, 可以用 g_ 或其它標志作為前綴, 以便更好的區分局部變量13.常量命名:
有編譯時常量, 無論是局部的, 全局的還是類中的, 和其他變量稍微區別一下. k 后接大寫字母開頭的單詞
const int kDaysInAWeek = 7;
14.函數命名:
常規函數:函數名的每個單詞首字母大寫, 沒有下劃線取值和設值函數:取值和設值函數要與存取的變量名匹配int num_entries()const { returnnum_entries_; }void set_num_entries(intnum_entries) {num_entries_ = num_entries;}?15.枚舉命名單獨的枚舉值應該優先采用 常量 的命名方式. 但 宏 方式的命名也可以接受. 枚舉名 UrlTableErrors (以及AlternateUrlTableErrors) 是類型, 所以要用大小寫混合的方式. enum UrlTableErrors {kOK = 0,kErrorOutOfMemory,kErrorMalformedInput, };16.
對那些臨時的, 短期的解決方案, 或已經夠好但仍不完美的代碼使用 TODO 注釋.
// TODO(kl@gmail.com): Use a "*" here for concatenation operator. // TODO(Zeke) change this to use relations.?
???
轉載于:https://www.cnblogs.com/hgy413/archive/2011/10/09/3693583.html
總結
- 上一篇: 【转】JAVA中的转义字符
- 下一篇: Larbin源代码分析[6]LARBIN