GlusterFS 編碼規範

2021-05-28 05:24:07 字數 2023 閱讀 4603

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 必須使用 長標籤 或 短輸出標籤 一定不可使...