排版
1:程序塊要采用縮進(jìn)風(fēng)格編寫,縮進(jìn)為1個(gè)tab所產(chǎn)生的空格。
說明:由于我們所開發(fā)的程序的特殊性,所以建議使用統(tǒng)一的編輯器。根據(jù)目前的情況,在sysol2 或sysol3 平臺下,使用source insight 做為開發(fā)編輯器,統(tǒng)一tab鍵的排版。
2:相對獨(dú)立的程序塊之間、變量說明之后必須加空行。
示例:如下例子不符合規(guī)范。
if (!valid_ni(ni))
{
... // program code
}
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
應(yīng)如下書寫
if (!valid_ni(ni))
{
... // program code
}
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
3:較長的語句(>80字符)要分成多行書寫,長表達(dá)式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首,劃分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語句可讀。
示例:
perm_count_msg.head.len = NO7_TO_STAT_PERM_COUNT_LEN
+ STAT_SIZE_PER_FRAM * sizeof( _UL );
act_task_table[frame_id * STAT_TASK_CHECK_NUMBER + index].occupied
= stat_poi[index].occupied;
act_task_table[taskno].duration_true_or_false
= SYS_get_sccp_statistic_state( stat_item );
report_or_not_flag = ((taskno < MAX_ACT_TASK_NUMBER)
&& (n7stat_stat_item_valid (stat_item))
&& (act_task_table[taskno].result_data != 0));
4:循環(huán)、判斷等語句中若有較長的表達(dá)式或語句,則要進(jìn)行適應(yīng)的劃分,長表達(dá)式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首。
示例:
if ((taskno < max_act_task_number)
&& (n7stat_stat_item_valid (stat_item)))
{
... // program code
}
for (i = 0, j = 0; (i < BufferKeyword[word_index].word_length)
&& (j < NewKeyword.word_length); i++, j++)
{
... // program code
}
for (i = 0, j = 0;
(i < first_word_length) && (j < second_word_length);
i++, j++)
{
... // program code
}
5:若函數(shù)或過程中的參數(shù)較長,則要進(jìn)行適當(dāng)?shù)膭澐帧?
示例:
n7stat_str_compare((BYTE *) & stat_object,
(BYTE *) & (act_task_table[taskno].stat_object),
sizeof (_STAT_OBJECT));
n7stat_flash_act_duration( stat_item, frame_id *STAT_TASK_CHECK_NUMBER
+ index, stat_object );
6:不允許把多個(gè)短語句寫在一行中,即一行只寫一條語句。
示例:如下例子不符合規(guī)范。
rect.length = 0; rect.width = 0;
應(yīng)如下書寫
rect.length = 0;
rect.width = 0;
7:if、for、do、while、case、switch、default等語句自占一行,且if、for、do、while等語句的執(zhí)行語句部分無論多少都要加括號{}。
示例:如下例子不符合規(guī)范。
if (pUserCR == NULL) return;
應(yīng)如下書寫:
if (pUserCR == NULL)
{
return;
}
8:對齊只使用tab鍵,不使用空格鍵。
9:函數(shù)或過程的開始、結(jié)構(gòu)的定義及循環(huán)、判斷等語句中的代碼都要采用縮進(jìn)風(fēng)格,case語句下的情況處理語句也要遵從語句縮進(jìn)要求。
10:程序塊的分界符(如C/C++語言的大括號‘{’和‘}’)應(yīng)各獨(dú)占一行并且位于同一列,同時(shí)與引用它們的語句左對齊。在函數(shù)體的開始、結(jié)構(gòu)的定義、枚舉的定義以及if、for、do、while、switch、case語句中的程序都要采用如上的縮進(jìn)方式。
示例:如下例子不符合規(guī)范。
for (...) {
... // program code
}
if (...)
{
... // program code
}
void example_fun( void )
{
... // program code
}
應(yīng)如下書寫。
for (...)
{
... // program code
}
if (...)
{
... // program code
}
void example_fun( void )
{
... // program code
}
11:在兩個(gè)以上的關(guān)鍵字、變量、常量進(jìn)行對等操作時(shí),它們之間的操作符之前、之后或者前后要加空格;進(jìn)行非對等操作時(shí),如果是關(guān)系密切的立即操作符(如->),后不應(yīng)加空格。
說明:采用這種松散方式編寫代碼的目的是使代碼更加清晰。
由于留空格所產(chǎn)生的清晰性是相對的,所以,在已經(jīng)非常清晰的語句中沒有必要再留空格,如果語句已足夠清晰則括號內(nèi)側(cè)(即左括號后面和右括號前面)不需要加空格,多重括號間不必加空格,因?yàn)樵贑/C++語言中括號已經(jīng)是清晰的標(biāo)志了。
在長語句中,如果需要加的空格非常多,那么應(yīng)該保持整體清晰,而在局部不加空格。給操作符留空格時(shí)不要連續(xù)留兩個(gè)以上空格。
示例:
(1) 逗號、分號只在后面加空格。
int a, b, c;
(2)比較操作符, 賦值操作符"="、 "+=",算術(shù)操作符"+"、"%",邏輯操作符"&&"、"&",位域操作符"<<"、"^"等雙目操作符的前后加空格。
if (current_time >= MAX_TIME_VALUE)
a = b + c;
a *= 2;
a = b ^ 2;
(3)"!"、"~"、"++"、"--"、"&"(地址運(yùn)算符)等單目操作符前后不加空格。
*p = 'a'; // 內(nèi)容操作"*"與內(nèi)容之間
flag = !isEmpty; // 非操作"!"與內(nèi)容之間
p = &mem; // 地址操作"&" 與內(nèi)容之間
i++; // "++","--"與內(nèi)容之間
(4)"->"、"."前后不加空格。
p->id = pid; // "->"指針前后不加空格
(5) if、for、while、switch等與后面的括號間應(yīng)加空格,使if等關(guān)鍵字更為突出、明顯。
if (a >= b && c > d)
12:一行程序以小于80字符為宜,不要寫得過長。
編程中的排版藝術(shù)
更新時(shí)間: 2007-02-02 21:25:30來源: 粵嵌教育瀏覽量:1178
粵嵌動態(tài)
推薦閱讀
- ·嵌入式實(shí)時(shí)操作系統(tǒng)的任務(wù)調(diào)度優(yōu)化策略與實(shí)踐
- ·湖北精實(shí)機(jī)電科技有限公司專場招聘會(長沙校區(qū))
- ·信號量與互斥鎖在資源競爭中的協(xié)同控制機(jī)制
- ·粵嵌科技2025年中總結(jié)大會召開——擘畫產(chǎn)教融合新藍(lán)圖
- ·Linux字符設(shè)備驅(qū)動框架解析:file_operations的核心作用與實(shí)現(xiàn)
- ·廣東朝歌數(shù)碼科技股份有限公司專場招聘會
- ·深化產(chǎn)教融合,共筑技能人才培養(yǎng)新生態(tài) —— 廣州華立學(xué)院到訪粵嵌從化校區(qū)為深化產(chǎn)教
- ·校企合作新突破 | 粵嵌科技與三亞學(xué)院共探產(chǎn)教融合新路徑
- ·粵嵌科技入選國家級職業(yè)數(shù)字展館聯(lián)合建設(shè)單位,賦能計(jì)算機(jī)程序設(shè)計(jì)員高技能人才培養(yǎng)
- ·嵌入式實(shí)時(shí)操作系統(tǒng)的性能優(yōu)化與實(shí)現(xiàn)路徑