亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺談嵌入式軟件的規(guī)范設(shè)計(jì)要點(diǎn)
        ——以C 語言的函數(shù)設(shè)計(jì)為例

        2021-01-20 11:42:02
        南方農(nóng)機(jī) 2021年1期
        關(guān)鍵詞:可讀性代碼編碼

        付 寬

        (漢中職業(yè)技術(shù)學(xué)院,陜西 漢中 723000)

        嵌入式系統(tǒng)已廣泛應(yīng)用于各行各業(yè),隨著人們生活向信息化、智能化的發(fā)展,嵌入式技術(shù)已經(jīng)徹底融入到人們的生活中,并發(fā)揮著越來越重要的作用。 軟件代碼相當(dāng)于嵌入式系統(tǒng)的靈魂,控制著整個(gè)嵌入式系統(tǒng)的工作。 軟件代碼質(zhì)量的好壞決定著系統(tǒng)的工作質(zhì)量, 而好的編碼規(guī)范是提高代碼質(zhì)量的最有效的手段之一。 如何編寫規(guī)范性的嵌入式軟件代碼在實(shí)際軟件開發(fā)過程中至關(guān)重要。

        1 編碼規(guī)范的意義

        對(duì)編程代碼的規(guī)范要求有諸多現(xiàn)實(shí)意義:1) 良好的編碼規(guī)范可以降低軟件的維護(hù)成本, 因?yàn)閹缀鯖]有哪一款軟件是由最初的開發(fā)人員在整個(gè)生命周期中維護(hù)的;2)一個(gè)好的編碼規(guī)范可以提高軟件的可讀性,讓開發(fā)人員盡可能快而徹底的理解新代碼;3) 良好的編碼標(biāo)準(zhǔn)可以最大化團(tuán)隊(duì)開發(fā)的合作效率;4) 長(zhǎng)期規(guī)范的編碼還可以讓開發(fā)人員養(yǎng)成良好的編碼習(xí)慣, 甚至鍛煉出更嚴(yán)謹(jǐn)?shù)乃季S[1]。C 語言是嵌入式系統(tǒng)中最常用的編程語言,本文以C 語言為例,針對(duì)C 語言中的函數(shù),簡(jiǎn)要談?wù)労瘮?shù)的設(shè)計(jì)規(guī)范。

        2 函數(shù)的設(shè)計(jì)規(guī)范

        一個(gè)龐大的程序通常會(huì)由很多子程序構(gòu)成, 每一個(gè)子程序都有其特定的功能。 通常在程序設(shè)計(jì)中,會(huì)將一些常用的功能模塊編寫成函數(shù)。C 語言中的函數(shù)是指一段可以直接被另一段程序或代碼引用的程序或代碼。 同一個(gè)函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用任意多次。 為了減少工作量和增加程序可讀性, 要盡量將重復(fù)的工作定義為函數(shù)。 以下列舉了幾項(xiàng)軟件工程師們比較容易忽略又特別重要的規(guī)范要點(diǎn)。

        2.1 函數(shù)應(yīng)做到功能單一、結(jié)構(gòu)簡(jiǎn)單

        為了實(shí)現(xiàn)積木式的開發(fā)模式, 應(yīng)該盡量實(shí)現(xiàn)函數(shù)的功能單一或功能集中,結(jié)構(gòu)簡(jiǎn)單。 這樣做不僅可以使函數(shù)的可讀性更強(qiáng),而且可以使函數(shù)的測(cè)試和維護(hù)變得簡(jiǎn)單。所以通常建議函數(shù)的長(zhǎng)度不超過一頁(常用開發(fā)系統(tǒng)配置)或300 行,并且函數(shù)接口應(yīng)該盡量設(shè)計(jì)精簡(jiǎn)。

        2.2 防止函數(shù)中產(chǎn)生隨機(jī)內(nèi)聚

        函數(shù)的內(nèi)聚是一個(gè)函數(shù)內(nèi)部各代碼之間相關(guān)聯(lián)程度的度量,函數(shù)內(nèi)部的各代碼之間應(yīng)該聯(lián)系緊密、功能集中,即是最理想的內(nèi)聚。 如果函數(shù)中各代碼之間聯(lián)系松散,甚至代碼之間的邏輯不相關(guān),將導(dǎo)致隨機(jī)內(nèi)聚的產(chǎn)生。 隨機(jī)內(nèi)聚會(huì)使得程序的維護(hù)、測(cè)試和升級(jí)變得困難,并且使得程序的功能模糊。 隨機(jī)內(nèi)聚通常會(huì)使函數(shù)在迭代的過程中陷入困難,所以通常建議將不相關(guān)的代碼剝離,構(gòu)成新的函數(shù),從而減少函數(shù)中隨機(jī)內(nèi)聚的產(chǎn)生。例如矩形的長(zhǎng)、寬與點(diǎn)的坐標(biāo)基本沒有任何關(guān)系,寫在一個(gè)函數(shù)內(nèi)則會(huì)造成隨機(jī)內(nèi)聚,如圖1 所示。

        圖1 防止函數(shù)中產(chǎn)生隨機(jī)內(nèi)聚

        2.3 應(yīng)為簡(jiǎn)單功能編寫函數(shù)

        軟件工程師為了尋求方便,通常會(huì)將非常簡(jiǎn)單的功能用一兩行代碼嵌入到上級(jí)函數(shù)中,這樣做雖然縮短了程序的開發(fā)時(shí)間,但不利于函數(shù)可讀性,從而不便于維護(hù)和測(cè)試。 應(yīng)當(dāng)為簡(jiǎn)單功能編寫函數(shù),在函數(shù)的命名上,將其功能顯式化,可大大提高函數(shù)的可讀性,并且便于維護(hù)和測(cè)試。 例如,程序中需要比較兩個(gè)值的大小,并提取較大的值,可以用一行代碼實(shí)現(xiàn),也可以編寫一個(gè)函數(shù),如圖2 所示。 由圖例可見,函數(shù)命名可使功能顯式化,利于提高可讀性。

        2.4 歸并功能小調(diào)用少的函數(shù)

        雖然建議將小功能編寫為單獨(dú)的函數(shù), 但是如果出現(xiàn)上級(jí)函數(shù)調(diào)用(扇入)次數(shù)極低的情況,應(yīng)考慮歸并到上級(jí)函數(shù)中。 功能小且扇入過低的函數(shù)如果單獨(dú)存在,會(huì)使函數(shù)數(shù)量增加,使程序過于龐大,不利于維護(hù)。 所以功能小且扇入過低的函數(shù)不建議單獨(dú)存在。

        2.5 輸入變量應(yīng)進(jìn)行必要的合法性檢查

        函數(shù)輸入變量的方式主要有兩種:一種是參數(shù)輸入,另一種是非參數(shù)輸入,即全局變量輸入。 函數(shù)應(yīng)該在使用輸入變量之前執(zhí)行必要的合法性檢查, 能夠有效避免出錯(cuò)。 建議如果有條件的話,增加異常處理措施可使程序更加可控。 例如,以下函數(shù)的功能為進(jìn)行AD 轉(zhuǎn)換并返回?cái)?shù)字量結(jié)果,應(yīng)對(duì)通道號(hào)參數(shù)的有效性進(jìn)行檢查,如果輸入的通道號(hào)大于允許的最大通道號(hào),則報(bào)錯(cuò),反之則運(yùn)行函數(shù)程序,如圖3 所示。

        圖3 輸入變量應(yīng)進(jìn)行必要的合法性檢查

        2.6 防止將函數(shù)的參數(shù)作為工作變量

        將函數(shù)的參數(shù)作為工作變量, 可能會(huì)錯(cuò)誤更改參數(shù)內(nèi)容,這可能會(huì)很危險(xiǎn)。 因此,最好先用局部變量替換必須更改的參數(shù), 然后將局部變量的內(nèi)容賦給該參數(shù)。 例如,函數(shù)中將參數(shù)sum 作為工作變量帶入計(jì)算,會(huì)增加風(fēng)險(xiǎn),如圖4 所示。

        圖4 防止將函數(shù)的參數(shù)作為工作變量

        2.7 函數(shù)的調(diào)用關(guān)系要考慮高扇入合理扇出

        函數(shù)的扇入是指直接調(diào)用該函數(shù)的上級(jí)函數(shù)的個(gè)數(shù),扇入大表示函數(shù)的復(fù)用程度高。 函數(shù)的扇出是指該函數(shù)直接調(diào)用的下級(jí)函數(shù)的個(gè)數(shù),扇出大表示函數(shù)的功能比較復(fù)雜,需要調(diào)用過多的下級(jí)函數(shù)。 一般情況下,軟件工程師通常追求函數(shù)的高扇入,同時(shí)合理扇出[2]。 因?yàn)樯热朐礁撸褂么撕瘮?shù)的上級(jí)函數(shù)越多,說明函數(shù)使用效率高,但不能單純追求高扇入而忽略了函數(shù)的獨(dú)立性。 而扇出越高表明函數(shù)越復(fù)雜,同時(shí)函數(shù)越不穩(wěn)定。 函數(shù)的穩(wěn)定性遵循木桶原理,扇出越高表明組成木桶的木板越多,函數(shù)的穩(wěn)定性越差。 因?yàn)槿魏我粋€(gè)調(diào)用的函數(shù)出問題了,這個(gè)函數(shù)也就會(huì)出問題。 一般建議函數(shù)的合理扇出數(shù)量一般為3 個(gè)~5 個(gè)。

        2.8 避免省略“void”關(guān)鍵字

        在C 語言中,“void”被翻譯為“無類型”,在函數(shù)中的用法有兩種:一是當(dāng)函數(shù)不需要返回值時(shí),在函數(shù)前使用void 限定,例如void func(int a,char *b);二是當(dāng)函數(shù)不接受參數(shù)時(shí), 在括號(hào)里使用void 限定, 例如int func(void)。“void”在不影響程序編譯的情況下是可以省略的,但為了規(guī)范起見,建議不要省略“void”,因?yàn)橛行┚幾g器比(如ST芯片的編譯器)必須要用該關(guān)鍵字,否則輕則出現(xiàn)編譯警告,重則編譯出錯(cuò)。 所以,為了使軟件代碼具有較高的維護(hù)性和移植性,須避免省略“void”關(guān)鍵字。

        3 函數(shù)優(yōu)化時(shí)需遵循的原則

        基于以上列舉的規(guī)范性要素,對(duì)已經(jīng)寫好的代碼和處于迭代期間的代碼,應(yīng)該進(jìn)行規(guī)范的優(yōu)化。 通過優(yōu)化可以使軟件合作編程更加輕松,使代碼維護(hù)性增強(qiáng),使工程師們工作更加嚴(yán)謹(jǐn),降低函數(shù)間的耦合度,并提高函數(shù)的獨(dú)立性以及代碼可讀性、效率和可維護(hù)性。優(yōu)化函數(shù)結(jié)構(gòu)時(shí),應(yīng)遵守以下原則:1)函數(shù)的功能應(yīng)當(dāng)單一;2)函數(shù)的規(guī)模不應(yīng)太大;3)函數(shù)的接口應(yīng)當(dāng)簡(jiǎn)單;4)函數(shù)的扇入盡量高;5)函數(shù)的扇出不能太高;6)函數(shù)的內(nèi)聚性盡量提高[3-4]。

        4 結(jié)論

        軟件程序由無數(shù)的函數(shù)構(gòu)成,提高函數(shù)的規(guī)范性是提高整個(gè)軟件代碼規(guī)范性的重要一環(huán)。 對(duì)于嵌入式軟件而言,無論是底層的驅(qū)動(dòng)代碼還是上層邏輯代碼,規(guī)范性都能使軟件合作編程更加輕松,使代碼維護(hù)性增強(qiáng),使工程師們工作更加嚴(yán)謹(jǐn)。 代碼作為開發(fā)企業(yè)的無形商品,近年來企業(yè)的管理者也越來越重視代碼的質(zhì)量管理,好的編碼規(guī)范是提高代碼質(zhì)量的最有效的手段之一。 越早實(shí)現(xiàn)規(guī)范化編碼的企業(yè),也就越能夠在市場(chǎng)競(jìng)爭(zhēng)中處于優(yōu)勢(shì)。

        猜你喜歡
        可讀性代碼編碼
        基于SAR-SIFT和快速稀疏編碼的合成孔徑雷達(dá)圖像配準(zhǔn)
        《全元詩》未編碼疑難字考辨十五則
        子帶編碼在圖像壓縮編碼中的應(yīng)用
        電子制作(2019年22期)2020-01-14 03:16:24
        Genome and healthcare
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        對(duì)增強(qiáng)吸引力可讀性引導(dǎo)力的幾點(diǎn)思考
        新聞傳播(2015年11期)2015-07-18 11:15:03
        淺談對(duì)提高黨報(bào)可讀性的幾點(diǎn)看法
        新聞傳播(2015年9期)2015-07-18 11:04:12
        中文字幕一区二区三区人妻少妇| 亚洲国产麻豆综合一区| 最新国产成人综合在线观看| 精品久久久亚洲中文字幕| 国产高清在线精品一区二区三区| 男女av免费视频网站| 中文字幕无码成人片| 野狼第一精品社区| 91亚洲国产成人aⅴ毛片大全| 精品人妻一区二区三区蜜臀在线 | 乱码av麻豆丝袜熟女系列| 人妻少妇精品无码专区二区| 国产精品va在线观看无码| 久久国语露脸国产精品电影| 亚洲国产精品悠悠久久琪琪| 国产偷国产偷亚洲综合av| 黄片在线观看大全免费视频| 精品麻豆一区二区三区乱码| 久久精品亚洲精品国产色婷| 国产成人一区二区三区| av天堂久久天堂av色综合| 国产成人av在线影院无毒| 成人性生交c片免费看| 国产精品一区二区三区av在线| 日韩av高清在线观看| 男人和女人高潮免费网站| 99久久国语露脸国产精品| 亚洲中文字幕诱惑第一页| 在线成人影院国产av| 中文字幕亚洲综合久久| 亚洲精品一区二区| 亚洲爆乳大丰满无码专区| 狼人av在线免费观看| 亚洲免费国产中文字幕久久久| 国产乱子伦| 中文字幕人妻丝袜美腿乱| 国产精品无码专区综合网| 久久精品这里就是精品| 99久久国产精品网站| 国精无码欧精品亚洲一区| 国产成品精品午夜视频|