寫代碼就像寫文章,需要準确地使用标點符号,合理地劃分段落。
編寫代碼時,遵守統一的編碼規範,讓排版美觀,可增強代碼易讀,降低出錯的可能性。
标識符命名規範綜合各類語言,目前常見的命名方法包括:
駝峰命名(Camel case):标識符由多個單詞組成,第一個單詞全小寫,後面的所有單詞首字母大寫
PASCAL命名(Pascal case):标識符由多個單詞組成,所有單詞的首字母大寫
小蛇命名(Snake case):标識符由多個單詞組成,所有單詞均小寫,以下劃線拆分單詞
大蛇命名(Snake case):标識符由多個單詞組成,所有單詞均大寫,以下劃線拆分單詞
烤串命名(kebab case):标識符由多個單詞組成,所有單詞小寫,以中劃線拆分單詞(常用于url中)
匈牙利命名:标識符中包含作用域和類型信息。
例如:
#define USER_NAME_MAX_LENGTH 20 /* 大蛇命名 */
char userName[USER_NAME_MAX_LENGTH]; /* userName遵守駝峰命名 */
char UserName[USER_NAME_MAX_LENGTH]; /* UserName遵守PASCAL命名 */
char user_name[USER_NAME_MAX_LENGTH]; /* user_name遵守小蛇命名 */
char g_cUserName[USER_NAME_MAX_LENGTH]; /* 匈牙利命名,g代表全局變量,c代表char類型 */
C語言,标識符命名采用小蛇命名和大蛇命名,變量名、函數名等按照小蛇命名;枚舉常量、宏定義等按照大蛇命名。
縮進規範VSCode的設置:
vscode顯示空格設置
SourceInSight的設置:
SourceInSight顯示空格設置
Notepad 的設置
Notepad 顯示空格設置
Visual Studio 2015的設置
VisualStudio2015顯示空格設置
空格規範
/* 雙目運算符 */
= - < > * / % | & ^ <= >= == !=
/* 三目運算符 */
? :
例如:
c = a b; /* good */
c=a b; /* bad */
/* 單目運算符 */
& * - ~ ! sizeof --
/* 結構體成員運算符 */
.和->
例如:
i ; /* good */
i ; /* bad */
if (condition) {}
s = sizeof(struct file);
char *str;
switch (action) { /* 左大括号放在行尾 */
case KOBJ_ADD:
return "add";
case KOBJ_REMOVE:
return "remove";
case KOBJ_CHANGE:
return "change";
default:
return NULL;
} /* 右大括号放在行首 */
int function(int x)
{ /* 函數是一個特例,左大括号獨占一行 */
body of function
}
if (condition) {
do_this();
do_that();
} else {
otherwise(); /* 隻有1條語句,建議使用大括号 */
}
為方便代碼編寫和閱讀,每行代碼長度不要超過80列,代碼中的字符串除外(為了方便字符串的閱讀和查找,同一個字符串,長度超過80列時不建議分成多行)。
注釋規範為代碼寫注釋是個好習慣,但不要過度。注釋中不要試圖解析您的代碼如何(HOW)工作,最好的方式是代碼本身就清晰地說明了它是如何工作的。
通常情況下,注釋用來說明你的代碼在做什麼(WHAT),以及為什麼這麼做(WHY),記錄避免描述怎麼做(HOW)。
/******************************************************************************
* Copyright 2022
*
* @file eraser_lib.cpp
*
* @brief
*
*=============================================================================
* Revision History
* Version Date Author Content
* ------- ---------- --------- ---------------------------------------
* V1.00 2022/03/12 yangyf Create.
*
*****************************************************************************/
/******************************************************************************
* @fn uint16_t calc_crc16(uint8_t const *data, int32_t data_len)
*
* @brief 計算16位的crc校驗碼
*
* @param p_data 待校驗數據的首地址
* @param data_len 數據長度
*
* @return CRC value, 0x0000 ~ 0xFFFF
*/
uint16_t calc_crc16(uint8_t const *data, int32_t data_len)
{
// ......
}
~ END ~
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!