◎ 不用或者少用全局變量
說(shuō)明:?jiǎn)蝹€(gè)文件內(nèi)部可以使用static的全局變量,可以將其理解為類(lèi)的私有成員變量。全局變量應(yīng)該是模塊的私有數(shù)據(jù),不能作用對(duì)外的接口使用,使用static類(lèi)型定義,可以有效防止外部文件的非正常訪(fǎng)問(wèn)。直接使用其他模塊的私有數(shù)據(jù),將使模塊間的關(guān)系逐漸走向“剪不斷理還亂”的耦合狀態(tài),這種情形是不允許的。
◎ 避免局部變量與全局變量同名。
說(shuō)明:盡管局部變量和全局變量的作用域不同而不會(huì)發(fā)生語(yǔ)法錯(cuò)誤,但容易使人誤解。
◎ 嚴(yán)禁使用未經(jīng)初始化的變量。
◎ 明確全局變量的初始化順序,避免跨模塊的初始化依賴(lài)。
說(shuō)明:系統(tǒng)啟動(dòng)階段,使用全局變量前,要考慮到該全局變量在什么時(shí)候初始化,兩者之間的時(shí)序關(guān)系,誰(shuí)先誰(shuí)后,一定要分析清楚,不然后果往往是低級(jí)而又災(zāi)難性的。
◎ 數(shù)據(jù)必須對(duì)外開(kāi)放時(shí),應(yīng)封裝接口函數(shù)來(lái)讀寫(xiě),同時(shí)注意全局?jǐn)?shù)據(jù)的訪(fǎng)問(wèn)互斥。
說(shuō)明:避免直接暴露內(nèi)部數(shù)據(jù)給外部模型使用,是防止模塊間耦合最簡(jiǎn)單有效的方法。
◎ 一個(gè)變量只有一個(gè)功能,不能把一個(gè)變量用作多種用途。
說(shuō)明:一個(gè)變量只用來(lái)表示一個(gè)特定功能,不能把一個(gè)變量作多種用途,即同一變量取值不同時(shí),其代表的意義也不同。
◎ 數(shù)據(jù)結(jié)構(gòu)功能單一,不要設(shè)計(jì)面面俱到的數(shù)據(jù)結(jié)構(gòu)。
說(shuō)明:相關(guān)的一組信息才是構(gòu)成一個(gè)結(jié)構(gòu)體的基礎(chǔ),結(jié)構(gòu)的定義應(yīng)該可以明確的描述一個(gè)對(duì)象,而不是一組相關(guān)性不強(qiáng)的數(shù)據(jù)的集合。設(shè)計(jì)結(jié)構(gòu)時(shí)應(yīng)力爭(zhēng)使結(jié)構(gòu)代表一種現(xiàn)實(shí)事務(wù)的抽象,而不是同時(shí)代表多種。結(jié)構(gòu)中的各元素應(yīng)代表同一事務(wù)的不同側(cè)面,而不應(yīng)把描述沒(méi)有關(guān)系或關(guān)系很弱的不同事務(wù)的元素放到同一結(jié)構(gòu)體中。
◎ 盡量減少?zèng)]有必要的數(shù)據(jù)類(lèi)型默認(rèn)轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換。
說(shuō)明:當(dāng)進(jìn)行數(shù)據(jù)類(lèi)型強(qiáng)制轉(zhuǎn)換時(shí),其數(shù)據(jù)的意義、轉(zhuǎn)換后的取值等都有可能發(fā)生變化,而這些細(xì)節(jié)若考慮不周,就很有可能留下隱患。
示例:如下賦值,多數(shù)編譯器不產(chǎn)生告警,但值的含義有變化。
char ch;
unsigned short int exam;
ch = -1;
exam = ch; // 編譯器不產(chǎn)生告警,此時(shí)exam為0xFFFF。
◎ 確認(rèn)未使用的變量應(yīng)當(dāng)刪除。
◎ 對(duì)于變量自增++和自減--,禁止在宏定義中使用,禁止和其他語(yǔ)句復(fù)合,因拆分單獨(dú)執(zhí)行。示例:if(++i>10) 錯(cuò)誤寫(xiě)法,必須改為i++;if(i>10)
-
嵌入式
+關(guān)注
關(guān)注
5046文章
18821瀏覽量
298591 -
編碼
+關(guān)注
關(guān)注
6文章
915瀏覽量
54651 -
編譯器
+關(guān)注
關(guān)注
1文章
1602瀏覽量
48896 -
變量
+關(guān)注
關(guān)注
0文章
607瀏覽量
28257
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論