日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > 大橙子瘋嵌入式


前言

這篇重點(diǎn)介紹一下代碼編程規(guī)范的擴(kuò)展要求-變量規(guī)范要求

規(guī)范要求

【規(guī)范1】一個(gè)變量只有一個(gè)功能,不能把一個(gè)變量用作多種用途

一個(gè)變量只用來表示一個(gè)特定功能,不能把一個(gè)變量作多種用途,即同一變量取值不同時(shí),其代表的意義也不同
如,value在同一個(gè)函數(shù)中表示結(jié)果又表示次數(shù),在閱讀時(shí)增加了難度,所以這種做法是錯(cuò)的,正確的做法應(yīng)該定義兩個(gè)變量,分別表示不同含義

【規(guī)范2】結(jié)構(gòu)功能單一,不要設(shè)計(jì)面面俱到的數(shù)據(jù)結(jié)構(gòu)

相關(guān)的一組信息才是構(gòu)成一個(gè)結(jié)構(gòu)體的基礎(chǔ),結(jié)構(gòu)的定義應(yīng)該可以明確的描述一個(gè)對象,而不是一組相關(guān)性不強(qiáng)的數(shù)據(jù)的集合。設(shè)計(jì)結(jié)構(gòu)時(shí)應(yīng)力爭使結(jié)構(gòu)代表一種現(xiàn)實(shí)事務(wù)的抽象,而不是同時(shí)代表多種。結(jié)構(gòu)中的各元素應(yīng)代表同一事務(wù)的不同側(cè)面,而不應(yīng)把描述沒有關(guān)系或關(guān)系很弱的不同事務(wù)的元素放到同一結(jié)構(gòu)中

【規(guī)范 3】不用或者少用全局變量

單個(gè)文件內(nèi)部可以使用static的全局變量,可以將其理解為類的私有成員變量。
全局變量應(yīng)該是模塊的私有數(shù)據(jù),不能作用對外的接口使用,使用static類型定義,可以有效防止外部文件的非正常訪問。
若該模塊內(nèi)需要定義多個(gè)全局變量,可以統(tǒng)一整合成一個(gè)結(jié)構(gòu)體句柄,在使用或者調(diào)試時(shí)會十分方便。

【規(guī)范4】防止局部變量與全局變量同名

雖然同名沒有語法錯(cuò)誤,但是函數(shù)會優(yōu)先使用局部變量,同時(shí)增加閱讀難度

一般情況下,通過使用變量命名規(guī)范后,局部變量與全局變量同名基本不存在,最大前綴不同

【規(guī)范 5】變量在定義時(shí)就需要初始化

原因:若定義時(shí)沒有初始化可能在一定條件下使用時(shí)出現(xiàn)錯(cuò)誤,不利于后面排查問題

【規(guī)范6】嚴(yán)禁使用未經(jīng)初始化的變量作為右值

在首次使用前初始化變量,初始化的地方離使用的地方越近越好。

【規(guī)范 7】構(gòu)造僅有一個(gè)模塊或函數(shù)可以修改、創(chuàng)建,而其余有關(guān)模塊或函數(shù)只訪問的全局變量,防止多個(gè)不同模塊或函數(shù)都可以修改、創(chuàng)建同一全局變量的現(xiàn)象

降低全局變量耦合度

【規(guī)范8】使用面向接口編程思想,通過 API 訪問數(shù)據(jù):如果本模塊的數(shù)據(jù)需要對外部模塊開放 ,應(yīng)提供接口函數(shù)來設(shè)置、獲取,同時(shí)注意全局?jǐn)?shù)據(jù)的訪問互斥

避免直接暴露內(nèi)部數(shù)據(jù)給外部模型使用,是防止模塊間耦合最簡單有效的方法。定義的接口應(yīng)該有比較明確的意義,比如一個(gè)風(fēng)扇管理功能模塊,有自動和手動工作模式,那么設(shè)置、查詢工作模塊就可以定義接口為SetFanWorkMode,GetFanWorkMode;查詢轉(zhuǎn)速就可以定義為GetFanSpeed;風(fēng)扇支持節(jié)能功能開關(guān),可以定義EnabletFanSavePower等。

因?yàn)閷ν馓峁┳兞亢茈y把控該變量被其他模塊隨意修改,影響系統(tǒng)的穩(wěn)定性

【規(guī)范9】盡量減少沒有必要的數(shù)據(jù)類型默認(rèn)轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換

當(dāng)進(jìn)行數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換時(shí),其數(shù)據(jù)的意義、轉(zhuǎn)換后的取值等都有可能發(fā)生變化,而這些細(xì)節(jié)若考慮不周,就很有可能留下隱患.
錯(cuò)誤示例:如下賦值,多數(shù)編譯器不產(chǎn)生告警,但值的含義還是稍有變化。

char ch; unsigned short int exam;
ch = -1;
exam = ch; // 編譯器不產(chǎn)生告警,此時(shí)exam為0xFFFF。 

【規(guī)范10】在定義變量時(shí)將其初始化

定義的同時(shí)初始化效率更高,具體原因可自行百度;且也能防止野指針的出現(xiàn),沒有進(jìn)行初始化程序運(yùn)行時(shí)出錯(cuò)很難發(fā)現(xiàn)問題

/* 先定義再賦值效率低 */ int flag;

flag = 1; /* 定義的同時(shí)賦值效率高 */ int flag = 1;
或 int flag = GetFlag(); // 函數(shù)返回值賦值 


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉