每個(gè)函數(shù)前面應(yīng)該放置一段塊注釋?zhuān)乓枋鲈摵瘮?shù)做什么以及(如果不是很清晰)如何使用該函數(shù)。重要的設(shè)計(jì)決策討論以及副作用說(shuō)明也適合放在注釋 中。避免提供那些代碼本身可以清晰提供的信息。
函數(shù)的返回類(lèi)型應(yīng)該單獨(dú)占據(jù)一行,(可選的)縮進(jìn)一個(gè)級(jí)別。不用使用默認(rèn)返回類(lèi)型int;如果函數(shù)沒(méi)有返回值,那么將返回類(lèi)型聲明為void。如 果返回值需要大段詳細(xì)的說(shuō)明,可以在函數(shù)之前的注釋中描述;否則可以在同一行中對(duì)返回類(lèi)型進(jìn)行注釋。函數(shù)名(以及形式參數(shù)列表)應(yīng)該被單獨(dú)放在一 行,從第一列開(kāi)始。目的(返回值)參數(shù)一般放在第一個(gè)參數(shù)位置(從左面開(kāi)始)。所有形式參數(shù)聲明、局部聲明以及函數(shù)體中的代碼都應(yīng)該縮進(jìn)一級(jí)。函 數(shù)體的開(kāi)始括號(hào)應(yīng)該單獨(dú)一行,放在開(kāi)始處的第一列。
每個(gè)參數(shù)都應(yīng)該被聲明(不要使用默認(rèn)類(lèi)型int)。通常函數(shù)中每個(gè)變量的角色都應(yīng)該被描述清楚,我們可以在函數(shù)注釋中描述,或如果每個(gè)聲明單獨(dú)一 行,我們可以將注釋放在同一行上。像循環(huán)計(jì)數(shù)器"i",字符串指針"s"以及用于標(biāo)識(shí)字符的整數(shù)類(lèi)型"c"這些簡(jiǎn)單變量都無(wú)需注釋。如果一組函數(shù) 都擁有一個(gè)相似的參數(shù)或局部變量,那么在所有函數(shù)中使用同一個(gè)名字來(lái)標(biāo)識(shí)這個(gè)變量是很有益處的(相反,避免在相關(guān)函數(shù)中使用一個(gè)名字標(biāo)識(shí)用途不同 的變量)。不同函數(shù)中的相似參數(shù)還應(yīng)該放在各個(gè)參數(shù)列表中的相同位置。
參數(shù)和局部變量的注釋?xiě)?yīng)該統(tǒng)一縮進(jìn)以排成一列。局部變量聲明應(yīng)用一個(gè)空行與函數(shù)語(yǔ)句分隔開(kāi)來(lái)。
當(dāng)你使用或聲明變長(zhǎng)參數(shù)的函數(shù)時(shí)要小心。目前在C中尚沒(méi)有真正可移植的方式處理變長(zhǎng)參數(shù)。最好設(shè)計(jì)一個(gè)使用固定個(gè)數(shù)參數(shù)的接口。如果一定要使用變 長(zhǎng)參數(shù),請(qǐng)使用標(biāo)準(zhǔn)庫(kù)中的宏來(lái)聲明具有變長(zhǎng)參數(shù)的函數(shù)。
如果函數(shù)使用了在文件中沒(méi)有進(jìn)行全局聲明的外部變量(或函數(shù)),我們應(yīng)該在函數(shù)體內(nèi)部使用extern關(guān)鍵字單獨(dú)對(duì)這些變量進(jìn)行聲明。
避免局部聲明覆蓋高級(jí)別的聲明。尤其是,局部變量不應(yīng)該在嵌套代碼塊中被重聲明。雖然這在C中是合法的,但是當(dāng)使用-h選項(xiàng)時(shí),潛在的沖突可能性 足以讓lint工具發(fā)出抱怨之聲。