軟件設計規(guī)范_第1頁
軟件設計規(guī)范_第2頁
軟件設計規(guī)范_第3頁
軟件設計規(guī)范_第4頁
軟件設計規(guī)范_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、深圳市德卡科技有眼公司SHENZHENDECARDSMARTCARDTECHCO,LTD,軟件設計規(guī)范制定:審核:批準:文件編號生效日期版本號分發(fā)部門修訂履歷廳P版本修訂內容修訂人修訂日期會簽與文件發(fā)放:會簽部門會簽人會簽日期簽收部門簽收人簽收日期深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心第一章、項目模塊劃分15一、模塊劃分15二、模塊命名15第二章、文件格式16一、C文件格式說明:161、文件創(chuàng)建及修改說明區(qū)162、頭文件引用區(qū)163、全局變量定義區(qū)174、驅動函數(shù)區(qū)175、應用函數(shù)區(qū)176、文件結束說明18二、h文件格式說明181、文件

2、創(chuàng)建及修改說明區(qū)182、防重調用定義183、頭文件引用184、控制接口定義區(qū)195、常量定義區(qū)196、宏調用定義區(qū)197、類型定義區(qū)198、外部引用變量區(qū)209、外部引用函數(shù)區(qū)2010、操作流程說明區(qū)2011、文件結束說明21*口&匚深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心第三章、命名規(guī)則21第三章、命名規(guī)則21一、函數(shù)命名規(guī)則21二、變量命名規(guī)則22三、宏命名規(guī)則22四、文件命名規(guī)則22五、新定義變量類型命名規(guī)則23六、命名注意事項:231、標識符命名基本原則232、命名中若使用特殊約定或縮寫,則要有注釋說明233、局部循環(huán)變量

3、也必須按照變量命名規(guī)則來定義234、不要用數(shù)字或較奇怪的字符來定義標識符235、用正確的反義詞組命名具有互斥意義的變量或相反動作的函數(shù)等246、避免使用以下劃線開始和結尾的定義247、程序中不要出現(xiàn)僅靠大小寫區(qū)分的相似的標識符248、標識符縮寫249、函數(shù)名應準確描述函數(shù)的功能2410、避免使用無意義或含義不清的動詞為函數(shù)命名24第四章、代碼書寫規(guī)范24一、基本原則25二、排版251、縮進風格252、不要使用【TAB鍵253、空行254、語句長度要小于80個字符265、長語句換行266、長表達式換行267、若函數(shù)的參數(shù)較長,則要進行適當?shù)膭澐?7*口&匚深圳市德卡科技有限公司文件編號文

4、件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心8、一行只寫一條語句279、括號2710、語句縮進要求2811、分界符2912、空格30三、注釋311、注釋量312、函數(shù)頭部注釋313、代碼與注釋同時修改314、注釋的內容要清楚、明了,含義準確,防止注釋二義性315、避免在注釋中使用縮寫,特別是非常用縮寫316、注釋書寫位置327、變量、常量命名不能充分自注釋的,必須加以注釋328、數(shù)據(jù)結構命名不能充分自注釋的,必須加以注釋339、全局變量注釋3310、注釋要與說描述的內容進行同樣的縮排3311、將注釋與其上面的代碼用空行隔開3412、連續(xù)case語句處理時,必須編寫注釋351

5、3、代碼或表達式的中間禁止插入注釋3614、通過正確命名使代碼成為自注釋的3615、在代碼的功能、意圖層次上進行注釋,提供有用、額外的信息3716、在程序塊的結束行右方加注釋標記,以表明某程序塊的結束3717、注釋格式3718、采用中文注釋3819、使用#if0和#endif注釋代碼塊3820、注釋不能嵌套38四、代碼可讀性38*口&匚深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心1、使用小括號明確表達式的操作順序382、用有意義的枚舉和宏替代數(shù)字393、源程序中關系較為緊密的代碼應盡可能相鄰394、用多行簡單語句替代復雜語句40五、變

6、量,結構401、公共變量401.1、 去掉沒必要的公共變量401.2、 仔細定義并明確公共變量的含義、作用、取值范圍及公共變量間的關系.401.3、 明確公共變量與操作此公共變量的函數(shù)或過程的關系411.4、 要謹慎向公共變量傳遞數(shù)據(jù)411.5、 防止局部變量與公共變量同名。411.6、 公共變量僅由模塊或函數(shù)創(chuàng)建和修改,其余模塊和函數(shù)只能訪問412、局部變量412.1、 嚴禁使用未經初始化的變量作為右值412.2、 不使用與硬件或軟件環(huán)境關系密切的變量412.3、 變量聲明時,同一類型,不同意義的多個變量,要分行,便于區(qū)分412.4、 對只設置一次的變量,宜使用“cons限定詞進行聲明422

7、.5、 避免在函數(shù)中使用static局部變量423、數(shù)組423.1、 數(shù)組大小及初始值要明確定義423.2、 數(shù)組、結構和聯(lián)合的初始化列表應顯式描述424、結構、聯(lián)合424.1、 結構的功能要單一,是針對一種事務的抽象424.2、 不要設計面面俱到、非常靈活的數(shù)據(jù)結構434.3、 不同結構間的關系不要過于復雜434.4、 結構中元素的個數(shù)應適中444.5、 結構體中元素的布局45*口&匚深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心4.6、結構體設計要考慮兼容性464.7、 跨平臺數(shù)據(jù)結構,要考慮字節(jié)順序及對齊問題464.8、 stru

8、ct或union類型中至少應有一個成員474.9、 struct或union類型的成員類型475、枚舉475.1、枚舉元素的初始化應完整476、自定義數(shù)據(jù)類型486.1、 合理地設計數(shù)據(jù)并使用自定義數(shù)據(jù)類型486.2、 自定義數(shù)據(jù)類型命名要恰當487、類型轉換487.1、 謹慎使用數(shù)據(jù)類型的強制轉換487.2、 了解編譯系統(tǒng)默認的數(shù)據(jù)類型轉換487.3、 應禁止signed類型與unsigned類型之間的隱式轉化497.4、 應禁止int類型與float類型的隱式轉化498、指針498.1、 不應對指針變量使用強制類型轉換賦值498.2、 不應把自動類型的局部變量的地址賦值給外部指針498.3

9、、 指針的指針不應超過兩級498.4、 指向不同數(shù)據(jù)類型的指針之間不應相互轉換498.5、 指針轉換過程中不應丟失指針的const、volatile屬性498.6、 只有指向數(shù)組的指針才允許進行算術運算498.7、 只有指向同一數(shù)組的兩個指針才允許相減508.8、 只有指向同一數(shù)組的兩個指針才允許用>>=<和<二等關系運算符進行比較508.9、 指針的索引值不應為負518.10、 不應對指針值可能為NULL的指針進行算術運算518.11、 調用返回類型為指針的函數(shù)后,應進行是否為空的判斷518.12、 局部變量的地址不應在本對象消亡后傳給另外一個對象51*口&匚

10、深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心8.13、一個未知大小的對象的指針不應成為加法或者減法操作的左操作數(shù)52六、函數(shù)521、函數(shù)編寫原則521.1、 明確函數(shù)功能,精確(而不是近似)地實現(xiàn)函數(shù)設計521.2、 函數(shù)的規(guī)模盡量限制在200行以內521.3、 一個函數(shù)僅完成一件功能521.4、 為簡單功能編寫函數(shù)521.5、 不要設計多用途面面俱到的函數(shù)531.6、 函數(shù)功能具有可預測性531.7、 函數(shù)功能具有獨立性531.8、 防止函數(shù)出現(xiàn)隨機內聚541.9、 功能不明確的較小函數(shù),可以不必存在551.10、 設計高扇入、合理扇出(小

11、于7)的函數(shù)551.11、 減少函數(shù)本身或函數(shù)間的遞歸調用551.12、 降低函數(shù)間的耦合度552、函數(shù)參數(shù)562.1、 明確接口函數(shù)參數(shù)的合法性檢查者562.2、 防止將函數(shù)的參數(shù)作為工作變量562.3、 避免設計多參數(shù)函數(shù),不使用的參數(shù)從接口中去掉572.4、 非調度函數(shù)應減少或防止控制參數(shù),盡量只使用數(shù)據(jù)參數(shù)572.5、 檢查函數(shù)所有參數(shù)輸入的有效性582.6、 檢查函數(shù)所有非參數(shù)輸入的有效性,如數(shù)據(jù)文件、公共變量等582.7、 調用函數(shù)時參數(shù)類型要一致582.8、 避免使用BOOL參數(shù)582.9、 在函數(shù)參數(shù)中不應使用static存儲類標識符582.10、 函數(shù)參數(shù)數(shù)量582.11、

12、宜避免函數(shù)參數(shù)在調用中未被使用58*口&匚深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心3、函數(shù)返回593.1、 對所調用函數(shù)的錯誤返回碼要仔細、全面地處理593.2、 函數(shù)的返回信要清楚、明了,讓使用者不容易忽視錯誤情況593.3、 函數(shù)返回值要與賦值變量類型一致593.4、 對于提供了返回值的函數(shù),在引用時最好使用其返回值593.5、 函數(shù)只有一個出口594、可重入函數(shù)594.1、 可重入函數(shù)使用局部變量594.2、 可重入函數(shù)使用全局變量595、函數(shù)模塊劃分605.1、 仔細分析模塊的功能,進行函數(shù)的劃分和組織605.2、 如果多

13、段代碼重復做同一件事情,那么在函數(shù)的劃分上可能存在問題.605.3、 函數(shù)內部的代碼結構順序606、循環(huán)語句616.1、 循環(huán)控制變量的類型應為整型616.2、 循環(huán)控制變量應為局部變量626.3、 for循環(huán)控制語句中的3個表達式只應和循環(huán)控制相關626.4、 for循環(huán)不宜只執(zhí)行一次627、判斷語句627.1、 不要輕易用條件分支去替換邏輯表達式627.2、 switch語句中不應只包含default語句627.3、 所有非空的switchcase子句都應以break語句結束627.4、 switch控制表達式不應是一個常量或邏輯表達式627.5、 每一個switch語句都應至少有一個ca

14、se子句627.6、 case表達式的類型應與switch控制表達式的類型一致627.7、 case表達式的大小不應超過switch控制表達式的大小628、賦值語句63深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心8.1、盡量不使用條件賦值語句639、其他注意事項639.1、 避免函數(shù)中不必要語句,防止程序中的垃圾代碼639.2、 在多任務操作系統(tǒng)的環(huán)境下編程,更要注意函數(shù)可重入性的構造639.3、 將常用較長變量用宏替代63七、預處理631、宏631.1、 用宏定義表達式時,要使用完備的括號631.2、 將宏所定義的多條表達式放在大括號中64

15、1.3、 使用宏時,不允許參數(shù)發(fā)生變化641.4、 函數(shù)類宏調用時參數(shù)要完整652、條件編譯652.1、 預處理語句“#if”和“#endif”不應分散在不同的文件之中652.2、 被包含文件中的“#else、“#elseif"、“#endif不應與父文件中的“#if”匹配652.3、 “#ifft達式中使用的宏應該已經被定義,并且“#if走達式只能包含整型常量652.4、 宏如果需要被重定義,應該先用“#undef解除前面的定義65八、中斷651、中斷服務程序不應有返回值652、中斷服務程序中不應使用printf()函數(shù)653、對于中斷中使用到的非局部變量,在中斷處理函數(shù)中應對其進

16、行入棧保護.654、調用中斷處理程序中的變量要進行開關中斷處理655、對于開關中斷,要注意成對匹配666、中斷服務程序代碼要簡單化66九、程序可測性661、原則661.1、 統(tǒng)一的調測開關及打印函數(shù)66*口&匚深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心1.2、統(tǒng)一的打印信息用格式661.2、統(tǒng)一的打印信息用格式661.3、 正式軟件產品中應把斷言及其它調測代碼去掉(即把有關的調測開關關掉)661.4、 用調測開關切換軟件的DEBUG版和正式版661.5、 軟件DEBUG版和發(fā)行版在實現(xiàn)功能上具有一致性661.6、 構造測試環(huán)境和測試

17、用例661.7、 預先設計程序調測的方法和手段及各種調測開關661.8、 調測開關應分為不同級別和類型672、斷言672.1、 使用斷言來發(fā)現(xiàn)軟件問題,提高代碼可測性672.2、 用斷言來檢查程序正常運行時不應發(fā)生但在調測時有可能發(fā)生的非法情況682.3、 不能用斷言來檢查最終產品肯定會出現(xiàn)且必須處理的錯誤情況682.4、 對較復雜的斷言加上明確的注釋682.5、 用斷言確認函數(shù)的參數(shù)682.6、 用斷言保證沒有定義的特性或功能不被使用682.7、 用斷言對程序開發(fā)環(huán)境(OS/Compiler/Hardware)的假設進行檢查692.8、 編寫防錯程序,然后在處理錯誤之后可用斷言宣布發(fā)生錯誤6

18、9十、程序效率701、原則701.1、 編程時要經常注意代碼的效率701.2、 提高代碼效率的前提701.3、 局部效率應為全局效率服務711.4、 合理劃分模塊函數(shù)711.5、 不應花過多的時間拼命地提高調用不很頻繁的函數(shù)代碼效率711.6、 不要一味追求緊湊的代碼711.7、 不應存在執(zhí)行不到的代碼711.8、 去掉沒必要的全局變量712、方法71*口&匚深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心2.1、解決軟件空間效率1712.2、 解決軟件空間效率2722.3、 循環(huán)體內工作量最小化722.4、 仔細分析有關算法,并進行優(yōu)化

19、732.5、 仔細考查、分析系統(tǒng)及模塊處理輸入(如事務、消息等)的方式,并加以改進732.6、 直接用匯編編寫調用頻繁或性能要求極高的函數(shù)732.7、 在多重循環(huán)中,應將最忙的循環(huán)放在最內層732.8、 盡量減少循環(huán)嵌套層次742.9、 盡量不在循環(huán)體內放置判斷語句742.10、 盡量用乘法或其它方法代替除法,特別是浮點運算中的除法752.11、 應注意switch-case語句的使用754一、程序質量761、原則761.1、 代碼質量保證優(yōu)先原則761.2、 合理劃分子模塊,提高可移植性和可重用性761.3、 提供良好的接口界面761.4、 系統(tǒng)具有一定容錯能力762、方法762.1、 認真

20、處理程序所能遇到的各種出錯情況762.2、 系統(tǒng)運行之初,要初始化有關變量及運行環(huán)境,防止未經初始化的變量被引用762.3、 系統(tǒng)運行之初,要對加載到系統(tǒng)中的數(shù)據(jù)進行一致性檢查762.4、 嚴禁隨意更改其它模塊或系統(tǒng)的有關設置和配置762.5、 不能隨意改變與其它模塊的接口762.6、 防止內存操作越界762.7、 編程時,要防止差1錯誤772.8、 要時刻注意易混淆的操作符772.9、 條件判斷語句必須處理所有情況78*口&匚深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心782.10、goto2.11、盡量都采用標準語句和標準庫函數(shù)7

21、82.12、避免使用嵌入式匯編782.13、精心構造算法,并對其性能、效率進行測試782.14、對較關鍵的算法最好使用其它算法來確認782.15、時刻注意表達式是否會上溢、下溢782.16、使用變量時要注意其邊界值的情況792.17、注意程序代碼是否超過系統(tǒng)有關限制792.18、循環(huán)、分支層次不要超過五層792.19、不要比較浮點數(shù)的相等792.20、關注共用體的存儲、對齊模式792.21、頭文件中不應有對象或函數(shù)的定義792.22、不應單獨使用小寫字母“1”或大寫字母“O”作為變量名792.23、函數(shù)聲明時參數(shù)不應只有類型名沒有標識符802.24、不應對有符號數(shù)進行位運算802.25、無格式

22、的字符型不應與負數(shù)常量和零比較802.26、無符號值不應與負數(shù)常量比較802.27、對變量進行移位操作應保證不會產生溢出和數(shù)據(jù)截短802.28、不應在布爾表達式中使用賦值操作符802.29、不應對布爾表達式進行算術或者位運算802.30、表達式的值在任何求值順序下應保持一致802.31、應避免除數(shù)可能為0的情況出現(xiàn)812.32、賦值運算符的左操作數(shù)不應進行轉換操作,并且應該是一個可更改的對象812.33、sizeof操作符不應用在有單邊作用的表達式上812.34、留心具體語力及編譯器處理不同數(shù)據(jù)類型的原則及有關細節(jié)81代碼代碼編輯、編譯、審查811、打開編譯器的所有告警開關對程序進行編譯81深

23、圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心2、在產品軟件(項目組)中,要統(tǒng)一編譯開關選項813、通過代碼走讀及審查方式對代碼進行檢查814、測試部測試產品之前,應對代碼進行抽查及評審825、養(yǎng)成隨時保存編寫代碼的習慣826、同產品軟件(項目組)內,最好使用相同的編輯器,并使用相同的設置選項827、要小心地使用編輯器提供的塊拷貝功能編程828、合理地設計軟件系統(tǒng)目錄,方便開發(fā)人員使用82附錄A常用數(shù)據(jù)類型及簡寫82附錄B常用單詞及縮寫83附錄C常見反義詞組85附錄D常見命名規(guī)則87一、匈牙利命名法87二、駱駝(Camel)命名法87三、帕斯卡(

24、Pascal)命名法87四、下劃線命名法87-1;D&U深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心第一章、項目模塊劃分、模塊劃分將整個項目按照功能進行模塊劃分,各個模塊相互獨立,每個模塊由一系列c文件和h文件組成。簡單功能的模塊采用一個c文件和h文件接口,復雜功能的模塊可能需要多個c文件和h文件。、模塊命名按照模塊所實現(xiàn)功能的英文名稱或者簡寫命名,全部采用小寫字母,多于1個單詞的中間加下劃線。例如:模塊命名說明液日日lcd.clcd.h液晶初始化,字符、漢字和圖片顯示lcd_fonts.clcd_fonts.h液晶自定義字庫按鍵ke

25、y.c按鍵初始化,鍵值列表,取按鍵值LD&U深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心key.h指示燈led.cled.h寸斤燈初始化,閃爍控制數(shù)碼管ledseg.cledseg.h數(shù)碼管初始化,數(shù)字顯示,特殊字符顯示蜂鳴器beep.cbeep.h蜂鳴器初始化,鳴叫控制第二章、文件格式、c文件格式說明:*4|*函申*事卑和tl*1H即才率電用噂1*|71東1南4:*審444:|二1V1、文件創(chuàng)建及修改說明區(qū)*上一?WErKfVZ1EM良3TEC近ILOGIF;Cc.iTD日Info-XD2013-02L0候板0Info一一*Vers

26、ion:*Descriptiotis:*.*事$*小*Fl事申審浦*桐溥*Ht噸加率京唾內|才京*F單甲限*申加和木4立事申申“曲水.*加財.事申*!>#電*0-*申才"和*卓主要包含:公司信息:公司名稱、公司網(wǎng)站。創(chuàng)建信息:創(chuàng)建者名稱,創(chuàng)建日期,最初版本號,文檔內容描述。修改信息:修改者名稱,修改日期,修改后版本號,修改內容描述??蓞⒖寄Ktemplate.。說明:與硬件相關的文件可以在此增加說明,如芯片型號等。2、頭文件引用區(qū)=nrmrinshhinclude主要包含:L0&仁深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研

27、發(fā)中心自定義頭文件引用:文件名包含著雙引號中??蓞⒖寄Ktemplate.。3、全局變量定義區(qū)45*幸*本-,*;*,和*電*95申*積1,宰布融幸布,耦黑木和MM*,*全局變量定義區(qū)亂世.#,.水旗如去承典為東鼻駟生典點承*#*.*志*孝率*.*事輒*,步.*膽:t*東,volatileuchor$I?op1aceFaraSiC.巾夜干TJjJ:主要包含:全局變量定義區(qū)說明注釋行:全局變量定義:要賦初值。全局變量注釋:可參考模塊template.。4、驅動函數(shù)區(qū)主要包含:驅動函數(shù)區(qū)說明注釋行:函數(shù)說明:包含函數(shù)說明,參數(shù)說明,返回值說明。函數(shù)體:可參考模塊«template.。5、

28、應用函數(shù)區(qū)主要包含:應用函數(shù)區(qū)說明注釋行:函數(shù)說明:包含函數(shù)功能說明,參數(shù)說明,返回值說明。函數(shù)體:q。0&U深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心可參考模塊template.。6、文件結束說明.*中中*£十*出率*單*一*事*M4(*一*?Hf,*ir*市霸*才*,*才*F*.*4出*it* 上EndOfFile、京jfC點看率*率率j11率It常常率盟*1初琳率*.率率*率.*率*狀*率*靠*率率本低率竄注裝我零安庫M瓢率*jfiH1"乳串竄沖1班強本班率率*率鼻*j生率本席小海事.*電M中事*拿卓甄事串

29、拿事|iLi|£率單*率卓率.主要包含:文件結束說明:EndOfFile可參考模塊«template.c»二、h文件格式說明1、文件創(chuàng)建及修改說明區(qū)二尊*中,*申審*林"*,«*,*Ccpy1曲士(C)T*聿*7*"*中,iMMM«率申,WoM*W*-*4t* *SHENZHEKDECARDTECHNiOLXlESCa.,LTD.* * *httpl/wtfbdecard.cqsi* *=Fi】oInfo率充Createb干:ip|=*Greated-t.;2同3一瓦-閱* *ertion:L0施D$criptiOTis;頭

30、文件慎擔* «Modifyby:* *JAxtify心工3;*本rersiw»辛棄Oeserrptions"市季*京桐He奉丸*01申事*充承率:聿*改,審率*枳*:*學*膽*拿*雅申*本班*Hm*率聿*叔申尊,口中H*3H1季*杈大章*中桂*%*京*拿主要包含:公司信息:公司名稱、公司網(wǎng)站。創(chuàng)建信息:創(chuàng)建者名稱,創(chuàng)建日期,最初版本號,文檔內容描述。修改信息:修改者名稱,修改日期,修改后版本號,修改內容描述??蓞⒖寄Ktemplate.h2、防重調用定義mXd:_QiPLAT£_H_工總門口守_mFLATK_H_步widif命名規(guī)則:下劃線+文件名大寫+

31、下劃線+文件類型H+下劃線可參考模塊template.h3、頭文件引用Jincludestring.hSincLudety-1主要包含:深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心自定義頭文件引用:文件名包含著雙引號中??蓞⒖寄Ktemplate.h4、控制接口定義區(qū)arfcf.n-1¥P_;PIQ_FOI?TGFIOF主要包含:控制線定義區(qū)說明注釋行:接口定義:全部采用大寫字母,單詞間以下劃線分割注釋說明:可參考模塊template.h5、常量定義區(qū)主要包含:常量定義區(qū)說明注釋行:常量定義:全部采用大寫字母,單詞間以下劃線分割注釋

32、說明:可參考模塊template.h6、宏調用定義區(qū)主要包含:宏調用定義區(qū)說明注釋行:宏調用處理:注釋說明:可參考模塊template.h7、類型定義區(qū)Vt;口&U深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心tT'pedefatnzetulniuiSendLenuintuiRecciveLenuharucScndBufi?TMP1UXBUFF'ucherUDfiEceiveBuffri(P_MAX_BLFF君是TJlPCO:MLMCAnOS主要包含:類型定義區(qū)說明注釋行:類型定義:注釋說明:結構體成員要單獨說明??蓞⒖?/p>

33、模塊template.h8、外部引用變量區(qū)*事*常*卓*率/*率*匐*戕率常幅*常常率章*發(fā)*(*&率*對富竄*寓*,京林中常*常常匐"*例冰單*|r南率*)幅M*看率率*姓*舸i常*林都引用變量區(qū)*tk*宇*;4"*k*ik4:*4*偏豐*tr*7*#*jk*kexternvoHciluchargTen&plateParaSign里質'直±±:主要包含:外部應用變量區(qū)說明注釋行:引用變量聲明:以extern關鍵字開始注釋說明:可參考模塊template.h9、外部引用函數(shù)區(qū),-,.*#(*-,*,*申富*4:i甯;*,*.*學*

34、重*事申*#,*,*,率*,*承事*申拿*外部引用函裝區(qū)中辛¥¥中辛韋¥¥率*幸事不斗*今邛*華號半率中產木率軍*李本平字率卡斗率誓*事*?¥*半亭斗*半半有小*辛學中y本*并半胃r車半奪率率中*哼半半中-乾等半率1中中率:平字*半¥¥率手卡*平率亨率事半¥率中“ft-H中率*+:,*才柳,*審*5Mdi季甫率靠收"*率中:*帆中*:率1t審*,申+率*耳通把京津*配今審率1*.,*卜隼樂章*就*率*.京承席申*卓:也*覃才,+*審南*市事*曲敝動角:境強卻怕fi*遨回二至也也忙!*率*4*一*點喜*4呻

35、*f4Hli拿*率*4瞳*總*4*卓*44*44#*4*4串*44141卓*舉141*H加He東學七HUV*史*_艇學京承*上*川!1羸/東阜幸在$*,.e-xternvoidMLInHf/Did.主要包含:外部應用函數(shù)區(qū)說明注釋行:函數(shù)注釋說明:包含函數(shù)功能說明,參數(shù)說明,返回值說明引用函數(shù)聲明:以extern關鍵字開始可參考模塊template.h10、操作流程說明區(qū)CD&U深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心拿*卓常常市加*卓|*聿柳章審*惠杷*點*杷/*套*3*拿*|1*:(機*罩*岷事*雙冀*率*塘茸宓*常覃*意1甘

36、壯卓童*蕙羈薛*隼*彼作流程說明區(qū)*4rr+*+*+拿*#4#*#«*津*4*=*率*#*:*ic*#fr*#+*i«*#*#*聿*#*+*+*4*聿*4*+P*t*我京常4卻事本事*法率K*M率和t*44Ut*考*零岸*m*4率率才*£*拿*¥京事事率事樹通邙塞率卡靠*4*率左*桐少。*京*法抬*率事:率和|*事本率*相田*由惠*充:M*鼻鼎和|】.模塊捫坨化,必發(fā)三辰町顯生后才能斯噸憧塊顯池由蚊.I,手法呢沖接二都發(fā)注.濟?、步序11L.J度至參益打始化,避人步皺二2.饅收數(shù)坦.數(shù)幅當上_上匚下發(fā)-悝塊接與電勢啟進寧帕缶處理2.1.禁收主機下無粒據(jù),

37、堂藉不希&詡議暮#遂入步Mil:歌相將合施設要求aSA20W2.22,2,榭過解析.根據(jù)不同命令字執(zhí)行相應梯作,進人器索£3:.hE*h若妾I:上.己與,I傳三.忙-引人十密.|*itMrg*串*ar*4<*|r*甲,*中-率*¥*!in*等*莊率*胃*葷*率*率*iNXW:*4hk*srW率*岷率*率*,倬*率*主要包含:操作流程說明區(qū)說明注釋行:模塊執(zhí)行流程說明:說明要詳細,執(zhí)行步驟要明確??蓞⒖寄Ktemplate.h11、文件結束說明中中節(jié)中中甲,干卡學審甲m/率“卡卡率中才率手中中如w中*軻T中甲市中率一才中蘋申中中申蒙*fr*申*醇申卡申率審軻P申

38、申審中卡率中中中耐中/W申中率審率率爭本事¥率率中率*審審中*中*EndOfFile也*鼻心*虹,"*9Hl*5K*如*>點*"*隼4*<4中*jL"*葬*4*<H聿*"*H>*點*4坤*4唾*加"/.相曰*玨*去*求主要包含:文件結束說明:EndOfFile可參考模塊template.h»第三章、命名規(guī)則、函數(shù)命名規(guī)則格式如下:序號說明字體選擇備注1模塊名稱大寫必選以最直觀模式給用戶區(qū)分/、同的模塊函數(shù),采用模塊英文名稱或者簡寫2下劃線必選間隔符3函數(shù)動作首字母大寫必選動作英文名稱或者簡寫,最多2個

39、單詞4函數(shù)對象首字母大寫可選對象英文名稱或者簡寫,最多2個單詞5函數(shù)范圍首字母大寫可選范圍英文名稱或者簡寫,最多2個單詞例如:LCD_DispWord,表示液晶模塊顯示漢字函數(shù)命名的一個重要原則是望文知意(其他人看到函數(shù)名就大體知道函數(shù)功能),必須考慮命名的準確性,命.口鼻U深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心名體現(xiàn)函數(shù)的功能,而不要體現(xiàn)函數(shù)的實現(xiàn)方法。、變量命名規(guī)則局部變量命名:格式如下:數(shù)組變量命名時在局部變量類型前增加前綴字母a"。例如:ucharaucSendBuff10;指針變量命名時在局部變量類型前增加前綴字母p

40、"。例如:uchar*pucReceiveBuff10;全局變量命名時在局部變量類型前增加前綴字母g”和下劃線。靜態(tài)變量命名時在局部變量類型前增加前綴字母s和下劃線。序號說明字體選擇備注1變量類型簡寫小寫必選以最直觀模式給用戶區(qū)分不向的變量類型,最多2個字母長度,具體參考附錄A常用變量類型及簡寫2變量修飾首字母大寫可選修飾詞英文名稱或者簡寫,最多2個單詞3變量名稱首字母大寫必選名稱英文名稱或者簡寫,最多2個單詞當前值例如:ucharucCurrentValue;表示無符號類型,三、宏命名規(guī)則格式如下:序號說明字體選擇備注1模塊名稱大寫必選以最直觀模式給用戶區(qū)分/、同的模塊宏,采用模塊

41、英文名稱或者簡寫2下劃線必選間隔符3功能名稱大寫必選功能英文名稱或者簡寫,最多2個單詞4下劃線可選間隔符5修飾詞大寫可選修飾詞英文名稱或者簡寫,最多2個單詞例如:#defineTMPBUFFMAX緩沖區(qū)最大長度256四、文件命名規(guī)則深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心格式如下(全部小寫)序號說明字體選擇備注1模塊名稱小寫必選采用模塊英文名稱或者簡寫2下劃線可選3分類名稱小寫可選分類英文名稱或者簡寫4頓號必選.5文件類型小寫必選代碼文件(c),頭文件(h)例如:液晶模塊:lcd_driver.clcd_driver.hlcd_fonts

42、.clcd_fonts.h按鍵模塊:key.ckey.h五、新定義變量類型命名規(guī)則新定義變量類型對變量進行命名時可以提出2個與其他類型不相同的字母前綴來表示,并在文件開始或者新類型定義時進行說明。六、命名注意事項:1、標識符命名基本原則標識符的命名要清晰、明了,有明確含義,同時使用完整的單詞或大家基本可以理解的縮寫,避免使人產生誤解。盡量采用英文命名,不可以用漢語拼音。標識符的長度應當符合"minlength&&max-information”原則。說明:較短的單詞可通過去掉“元音”形成縮寫;較長的單詞可取單詞的頭幾個字母形成縮寫;一些單詞有大家公認的縮寫。參考附錄B

43、常用單詞及縮寫2、命名中若使用特殊約定或縮寫,則要有注釋說明說明:應該在源文件的開始之處,對文件中所使用的縮寫或約定,特別是特殊的縮寫,進行必要的注釋說明。3、局部循環(huán)變量也必須按照變量命名規(guī)則來定義說明:變量,尤其是局部變量,如果用單個字符表示,很容易敲錯(如i寫成j),而編譯時又檢查不出來,有可能為了這個小小的錯誤而花費大量的查錯時間。4、不要用數(shù)字或較奇怪的字符來定義標識符示例:如下命名,使人產生疑惑。#defineEXAMPLE_0_TEST*口&匚深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心voidTMP_SetSls00(

44、ucharucSls);應改為有意義的單詞命名#defineEXAMPLE_UNIT_TEST#defineEXAMPLE_ASSERT_TESTvoidTMP_SetUdtMsgSls(ucharucSls);5、用正確的反義詞組命名具有互斥意義的變量或相反動作的函數(shù)等說明:可參考附錄C常見反義詞組下面是一些在軟件中常用的反義詞組。示例:uintuiMinSum;uintuiMaxSum;uintTMP_AddUser(uchar*pucUserName);uintTMP_DeleteUser(uchar*pucUserName);6、避免使用以下劃線開始和結尾的定義除了編譯開關/頭文件等特

45、殊應用,應避免使用_EXAMPLE_TEST_之類以下劃線開始和結尾的定義7、程序中不要出現(xiàn)僅靠大小寫區(qū)分的相似的標識符例如:uintuix,uiX;/變量x與X容易混淆voidTMP_foo(uintuiX);/函數(shù)foo與FOO容易混淆voidTMP_FOO(floatfX);8、標識符縮寫命名時盡量不使用單詞縮寫,如果單詞太長必須縮寫,應該省略其中的元音字母,以便望文知意,如packet_header縮寫為pkt_hdr,而不要縮寫為pack_h。常用單詞縮寫見附錄B常用單詞及縮寫9、函數(shù)名應準確描述函數(shù)的功能10、避免使用無意義或含義不清的動詞為函數(shù)命名說明:避免用含義不清的動詞如pr

46、ocess、handle等為函數(shù)命名,因為這些動詞并沒有說明要具體做什么。第四章、代碼書寫規(guī)范*口&匚深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心、基本原則制定規(guī)范的基本目的就是加強代碼的可維護性,也就是說代碼必須易于閱讀,易于理解,易于測試,易于移植。所有的代碼必須采用ANSIC,標準函數(shù)原型必須采用ANSIC標準。保持代碼語句和結構簡單清晰,避免使用復雜語句。二、排版1、縮進風格程序塊要采用縮進風格編寫,縮進的空格數(shù)為4個。預處理語句、全局數(shù)據(jù)、函數(shù)原型、標題、附加說明、函數(shù)說明、標號等均頂格書寫。語句塊的“”配對對齊,并與其前一

47、行對齊。2、不要使用【TAB鍵【TAB】鍵在不同編輯器和打印機上因所設置空格數(shù)目不同而造成程序布局不整齊,從而導致代碼縮排混亂??梢圆捎每崭矜I來替代,4個空格代替一個【TAB鍵。如果采用SourceInsight軟件,可以設置按TAB鍵后自動用4個空格鍵替代。3、空行相對獨立的程序塊之間、變量說明之后必須加空行。程序文件結構各部分之間空兩行,若不必要也可只空一行,各函數(shù)實現(xiàn)之間一般空兩行示例:如下例子不符合規(guī)范。if(ucCount=1)&&(ucRetCode=1)if(ucStatus='1')*pucErrCode=0;returnEPRONTCENTER

48、;if(ucCount=1)&&(ucRetCode=0)*pucErrCode=EPRONTCENTER;returnEPRONTCENTER;應如下書寫:if(ucCount=1)&&(ucRetCode=1)深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心(if(ucStatus='1')(*pucErrCode=0;returnEPRONTCENTER;)if(ucCount=1)&&(ucRetCode=0)(*pucErrCode=EPRONTCENTER;returnE

49、PRONTCENTER;)4、語句長度要小于80個字符一行語句以小于80字符為宜,不要寫得過長。過多的代碼會導致顯示器顯示不足,從而降低代碼閱讀速度,代碼打印時也會導致打印不足5、長語句換行較長的語句(>80字符)要分成多行書寫,長表達式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首,劃分出的新行要進行適當?shù)目s進,使排版整齊,語句可讀。示例:stPermCountMsg.ucHead.ucLen=TMP_TO_STAT_PERM_COUNT_LEN+TMP_STAT_SIZE_PER_FRAM*sizeof(ulong);aucTaskTableucFrameId*TMP_STAT_T

50、ASK_CHECK_NUMBER+ucIndex=astAtPoiucIndex.ucStatus;6、長表達式換行循環(huán)、判斷等語句中若有較長的表達式或語句,則要進行適應的劃分,長表達式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首。劃分出的新行要進行適當?shù)目s進,使排版整齊,語句可讀。示例:if(ucTaskNo<TMP_MAX_TASK_NUMBER)&&(TMP_StatItemValid(ucStatItem)*口&匚深圳市德卡科技有限公司文件編號文件版本A1生效日期軟件設計規(guī)范發(fā)行類別新增口修訂發(fā)行部門研發(fā)中心(./programcode)for(i=0,j=0;(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論