glusterfs 編碼規範
1. 每個結構成員需要有一條能夠說明其用途的注釋
bad:
gf_lock_t lock; /* lock */
good:
dbtype access_mode; /* access mode for accessing
*the databases, can be
*db_hash, db_btree
*(option access-mode )
*/2. 在函式的開始宣告所有變數
所有函式中的區域性變數必須在"
10.優雅的處理malloc錯誤
glusterfs不應該因為缺少記憶體crash或者退出,如果記憶體分配失敗,呼叫應該被unwound,錯誤應該返回給使用者
11. 使用返回引數,並且保留函式返回值,來說明函式的成功和失敗
如果乙個函式需要返回更多的資料,使用指標,返回值一般用來標識函式是否成功。
bad:
int32_t dict_get_int32 (dict_t *this, char *key);
good:
int dict_get_int32 (dict_t *this, char *key, int32_t *val);
12. 使用帶「n」的字串函式
bad:
strcpy (entry_path, real_path);
good:
strncpy (entry_path, real_path, entry_path_len);
13. 不應該有從來不被執行的**,或者被注釋掉得**
14. 每個函式中只有乙個地方可以unwind或者返回
15. 控制每個函式的規模
每個函式控制在2到3頁(80行),超過這個規模可以寫多個helper函式
helper函式的例子
static int
same_owner (posix_lock_t *l1, posix_lock_t *l2)
**風格
括號的位置
使用k&r/linux 風格
int some_function (...)
else if (...) else
do while (cond);}
縮排使用8個空格,並且保證**中只有空格沒有tab
注釋在每個函式之前寫乙個注釋描述他的功能,引數和返回值,說明它是 乙個內部函式還是函式
在每個結構之前寫乙個注釋,對每個結構成員寫注釋
例子:/**
* hash_name -hash function for filenames
* @par: parent inode number
* @name: basename of inode
* @mod: number of buckets in the hashtable
** @return: success: bucket number
* failure: -1
** not for external use.
*/突出顯示競爭區域
pthread_mutex_lock (&mutex);
pthread_mutex_unlock (&mutex);
乙個fop的**框架
首先是初始化,然後是引數檢查,所有的錯誤都會goto 到唯一點"out",在這個地方,**將檢查錯誤的型別,然後做相應的清理。
int32_t
sample_fop (call_frame_t *frame,
xlator_t *this,
...)
/* another system call */
if (...)
/* ... */
out:
if (op_ret == -1)
if (pfd)
}stack_unwind (frame, op_ret,op_errno, fd);
return 0;
}
php 編碼規範哪些 php編碼規範
1.php 必須以完整的形式來定界 即不要使用php 短標籤 且保證在關閉標籤後不要有任何空格。2.當乙個字串是純文字組成的時候 即不含有變數 則必須總是以單引號 作為定界符。例如 a example string 3.變數替換中的變數只允許用 變數名 的形式。例如 greeting hello n...
php 編碼規範哪些 PHP編碼規範
很多初學者對編碼規範不以為然,認為對程式開發沒有什麼幫助,甚至因為要遵循規範而影響了學習和開發的進度。或者因為經過一段時間的使用,已經形成了自己的一套風格,所以不願意去改變。這種想法是很危險的。如今的 web 開發,不再是乙個人就可以全部完成的,尤其是一些大型的專案,往往需要十幾人,甚至幾十人來共同...
php 編碼規範哪些 PHP 編碼規範
這是給小組制定的php編碼規範 該 php 編碼規範基本上是同 psr 規範的。有一部分的編碼規範 psr 中是建議,此編碼規範會強制要求。此編碼規範 是以 psr 1 psr 2 psr 2擴充套件 為藍本,並增加了相應的細節說明。通則基本編碼 php 必須使用 長標籤 或 短輸出標籤 一定不可使...