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

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

1、前言

模塊化程序設(shè)計(jì)是指在進(jìn)行程序設(shè)計(jì)時(shí)將一個(gè)大程序按照功能劃分為若干小程序模塊,每個(gè)小程序模塊完成一個(gè)確定的功能,并在這些模塊之間建立必要的聯(lián)系,通過(guò)模塊的互相協(xié)作完成整個(gè)功能的程序設(shè)計(jì)方法。

比如搭積木,可以用一個(gè)個(gè)積木模塊組合成我們想要的任何樣子,而且通過(guò)使用相同的積木模塊組合成不同的樣子

2、為何要模塊化

為什么要模塊化程序設(shè)計(jì)?那就需要從程序模塊化的好處說(shuō)起!只有了解了其優(yōu)點(diǎn),才能更好的實(shí)現(xiàn)模塊化編程。

  1. 降低程序設(shè)計(jì)的復(fù)雜度

有利于程序的設(shè)計(jì)和調(diào)試,功能相對(duì)獨(dú)立,結(jié)構(gòu)清晰;主要是封裝實(shí)現(xiàn)細(xì)節(jié),提供使用接口即可

  1. 提供代碼的復(fù)用性

現(xiàn)成的程序代碼,直接移植到另一個(gè)項(xiàng)目中簡(jiǎn)單修改甚至不用修改就能使用,多個(gè)模塊程序組合就完成了一個(gè)新的功能;這也是模塊化最大的意義所在

  1. 便于功能維護(hù)和擴(kuò)展

一旦出現(xiàn)問(wèn)題,能迅速定位哪個(gè)模塊出現(xiàn)的問(wèn)題

  1. 程序的結(jié)構(gòu)一目了然

可以看出程序中使用了哪些驅(qū)動(dòng)、有哪些外設(shè)模塊、大概有哪些功能等

  1. 保證系統(tǒng)穩(wěn)定性

該模塊程序已通過(guò)之前的項(xiàng)目經(jīng)過(guò)反復(fù)驗(yàn)證,穩(wěn)定性高,在新項(xiàng)目中移植比重寫更穩(wěn)定

  1. 有利于團(tuán)隊(duì)開(kāi)發(fā)

各模塊之間功能獨(dú)立,有利于任務(wù)分解,團(tuán)隊(duì)分工,各自實(shí)現(xiàn)對(duì)應(yīng)的功能,并且可以單獨(dú)進(jìn)行測(cè)試驗(yàn)證

3、如何拆分模塊

基本思路是自頂向下、逐步分解、分而治之,即將一個(gè)較大的程序按照功能分割成一些小模塊;比如手持遙控器,主要功能就是人機(jī)交互,可能還會(huì)有參數(shù)設(shè)置等,那么依次往下分解得到以下模塊:

在拆分模塊時(shí)應(yīng)該注意以下幾個(gè)主要原則:

  1. 模塊獨(dú)立

模塊的獨(dú)立性原則表現(xiàn)在模塊完成獨(dú)立的功能,與其他模塊的聯(lián)系應(yīng)該盡可能得簡(jiǎn)單,各個(gè)模塊具有相對(duì)的獨(dú)立性。

  1. 模塊的規(guī)模要適當(dāng)

模塊的規(guī)模不能太大,也不能太小。如果模塊的功能太強(qiáng),可讀性就會(huì)較差,若模塊的功能太弱,就會(huì)有很多的接口。開(kāi)發(fā)者需要通過(guò)較多的程序設(shè)計(jì)來(lái)進(jìn)行經(jīng)驗(yàn)的積累。

  1. 分解模塊時(shí)要注意層次

在進(jìn)行多層次任務(wù)分解時(shí),要注意對(duì)問(wèn)題進(jìn)行抽象化。在分解初期,可以只考慮大的模塊,在中期,再逐步進(jìn)行細(xì)化,分解成較小的模塊進(jìn)行設(shè)計(jì)。

  1. 不對(duì)外開(kāi)放全局變量

模塊內(nèi)部使用的全局變量,需要外部修改或者獲取時(shí),需要通過(guò)封裝成 API 函數(shù)對(duì)外提供,同時(shí)可以在函數(shù)內(nèi)有相關(guān)限制,防止外部直接操作模塊內(nèi)部的全局變量引發(fā)模塊運(yùn)行異常,因此模塊內(nèi)部的全局變量可定義為靜態(tài)全局變量。

4、如何理解

通常一個(gè)模塊就是一個(gè).c 文件和一個(gè).h 文件的結(jié)合,頭文件(.h)中是對(duì)于該模塊接口的聲明

  1. 該模塊的.c文件實(shí)現(xiàn)具體功能,而.h文件則為該功能模塊的接口函數(shù)等

  2. 一個(gè)大模塊中也會(huì)存在多個(gè)小模塊,即模塊中存在多個(gè).c和.h文件,每個(gè).c和.h作用各不相同

  3. 一個(gè).c 文件必須一個(gè)對(duì)應(yīng)的.h文件,而.h文件不一定需要對(duì)應(yīng)的.c 文件

比如實(shí)現(xiàn)一個(gè)OLED驅(qū)動(dòng)模塊,可能會(huì)有以下的文件:

  • oled.c 和 oled.h

實(shí)現(xiàn)具體功能,如清屏、畫圖、字符顯示等;.h 文件對(duì)外提供 API 接口函數(shù)

  • oledio.c 和 oledio.h

實(shí)現(xiàn)底層接口初始化和通信(IIC或SPI),為oled.c文件提供驅(qū)動(dòng)接口

  • oledconf.c 和 oledconf.h

驅(qū)動(dòng)配置, 如字體大小、分辨率等配置信息

  • fontxxx.h 和 bmpxxx.h

用來(lái)存放字體和BMP圖形點(diǎn)陣數(shù)據(jù)


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