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