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

當(dāng)前位置:首頁 > > 嵌入式微處理器
[導(dǎo)讀]對很多人來,嵌入式軟件開發(fā)過程中 模塊化 (Modularization)是一個海市蜃樓、是一個書面詞匯、是一個過氣的時尚——模塊化似乎從未真正的實現(xiàn)過。吹牛時人們常不屑的說: 沒吃過豬肉,但還沒看過豬跑么?事實上,如果討論的對象是嵌入式軟件,很多人可能真的沒有看過豬跑。

對很多人來,嵌入式軟件開發(fā)過程中? 模塊化 (Modularization)是一個海市蜃樓、是一個書面詞匯、是一個過氣的時尚——模塊化似乎從未真正的實現(xiàn)過。 吹牛時人們常不屑的說: 沒吃過豬肉,但還沒看過豬跑么? 事實上,如果討論的對象是嵌入式軟件,很多人可能真的沒有看過豬跑。 在話題變得更像都市傳說的之前,我想問一個問題:
為什么要模塊化?
有經(jīng)驗的人會說:
為了代碼復(fù)用(Code Reuse)
進一步——“為什么模塊化可以實現(xiàn)代碼復(fù)用呢?”很多人會說:
你這不是抬杠嗎?明擺著的,代碼做成了模塊,那么別的項目就可以直接使用了,模塊里的這部分代碼就得到了復(fù)用。
更進一步——“代碼復(fù)用又是為了什么呢?”聽到這里項目經(jīng)理們深吸了最后一口煙屁股,順手丟到腳邊、踩滅、起身準(zhǔn)備離開:
代碼復(fù)用可以節(jié)省開發(fā)時間,加快項目研發(fā)速度。
為了把嘴邊的那句“你們慢慢聊,我還有事”噎回去,我們再問一個問題:
實際項目開發(fā)中,用模塊的時候,項目的進度真的加快了么?時間真的節(jié)省了么?
項目經(jīng)理們不動了,抬起到半空中的屁股慢慢的坐了下來。這次,他們的語氣是認(rèn)真的:
不,使用模塊通常并不一定能加快項目進度。老實說,用別人的模塊,程序員常常要認(rèn)真理解模塊的功能和代碼才能在調(diào)試的時候確認(rèn)問題的范圍。你知道,很多時候看懂他人代碼所用的時間比自己重新設(shè)計一個更長。
周圍不少程序員都投來贊同的眼光,有的甚至很認(rèn)真的點了點頭。實際上,這里我們已經(jīng)發(fā)現(xiàn),在實踐中,拋開用于模塊化的技術(shù)不談,使用模塊實現(xiàn)代碼復(fù)用本身往往并不能加快一個團隊的開發(fā)速度——那么我們要模塊化做什么?



下結(jié)論還為時尚早。從項目經(jīng)理們的描述可以看出:

  • 代碼復(fù)用的目的或者說動機是 節(jié)省開發(fā)時間
  • 實際執(zhí)行中,程序員因為種種原因,在使用模塊時總是要 花費大量時間讀懂了代碼才能“放心地”去使用它。



程序(軟件)是“程序員嘗試去固化的自己的思維”;而模塊(硬件)則是“業(yè)已固化的邏輯”, 讀懂一段程序,實際上就是要通過死的代碼邏輯去 反推模塊構(gòu)作者的思維,這 是一個逆向過程,這 是一個人與人之間用代碼進行間接交流的過程,當(dāng)邏輯本身較為復(fù)雜時,顯然比將自己的思維直接翻譯成程序(重新開發(fā)一個)更為困難。


通過上面的分析,很容易看出,模塊化就是為了通過復(fù)用代碼來加快開發(fā)速度,而正是 程序員閱讀要復(fù)用的代碼讓這一努力付之東流。由此,我們可以非常直接的得出結(jié)論:
使用模塊時,必須阻止程序員閱讀要復(fù)用的代碼
或者換一種說法:
使用模塊時,必須專注于模塊的使用,而必須有意忽視模塊的實現(xiàn)邏輯,必須要在心理上信任模塊。簡而言之,必須把模塊視作黑盒子!


很容易發(fā)現(xiàn),上面的結(jié)論是站在項目經(jīng)理的視角得出的,因為項目經(jīng)理關(guān)注的是項目本身,是各類資源的合理利用,是項目的進度—— 項目經(jīng)理唯一不需要也不應(yīng)該關(guān)注的是具體的技術(shù)實現(xiàn)細(xì)節(jié) 。那么從第一線程序員的視角來看這個問題:
為什么程序員要閱讀模塊的代碼實現(xiàn)呢?
  筆者問過不同從業(yè)時間/經(jīng)驗的程序員,從過來的的角度來看,無非是以下幾個原因:

  • 學(xué)習(xí)目的——想知道別人是怎么實現(xiàn)的。很多程序員認(rèn)為通過閱讀別人的代碼能夠快速的學(xué)習(xí)他人的經(jīng)驗從而提升自己。

    然而,從項目管理的角度來看這個問題,程序員利用業(yè)余時間閱讀他人的代碼來提升自己無可厚非,或者說是值得提倡的,但犧牲寶貴的項目時間來閱讀模塊的實現(xiàn)代碼而不是專注于模塊的使用(使用模塊快速的實現(xiàn)項目所需的功能),這對項目本身是弊遠大于利的——閱讀代碼帶來的是程序員的能力提升,這是對團隊來說的遠期利好,但這一利好對項目本身的時效性卻微乎其微——俗話說遠水不解近渴就是這個意思。

    實際上,項目經(jīng)理通常要根據(jù)程序員的已有能力來分配任務(wù),而不會寄希望于程序員通過閱讀模塊代碼獲得提升以后再來回報眼前這個火燒眉毛的項目——如果真有項目經(jīng)理這么做了,那只能說,進度慢了完全不是程序員閱讀模塊代碼的錯,而是他最直接的用人問題——我也只能相信,也許他真的無人可用了。

    所以結(jié)論就是:嚴(yán)禁工作時間以學(xué)習(xí)為目的閱讀模塊源代碼。

  • 調(diào)試目的——也許并非所有的程序員都對自己的代碼質(zhì)量天然的自信,但幾乎所有的程序員都對別人寫的代碼(模塊)天然的不放心——就像孔乙己一樣,必須親眼看了酒保從黃酒壇子里舀出酒來而沒有摻水才放心——所以程序出了問題,必然要懷疑模塊,而且甚至有很多不負(fù)責(zé)任的程序員天然的會首先懷疑模塊——不是自己寫的,怎么能放心——所以調(diào)試的時候必然:

  1. 要有源代碼,否則就不會調(diào)試了
  2. 必然要閱讀模塊的代碼,否則就不知道究竟這個源代碼是不是對的
  3. 必然要讀懂模塊的代碼,否則怎么能體“自己的程序出錯完全是模塊的代碼寫的不好”。

對于這種情況,就我個人來說,只有一條準(zhǔn)則——不提供源代碼!只提供庫文件——相信我,通常面對匯編代碼熟手無策的程序員會在調(diào)試的時候自動忽視模塊的實現(xiàn)細(xì)節(jié),專注于模塊接口的輸入輸出行為——給什么輸入,期望什么輸出,實際獲得什么輸出——一目了然,簡單直接。如果真的 期望輸出和觀察到的 實際輸出不同,問題也就找到了:要么是文檔沒有讀好,對輸入輸出的理解有誤;要么是輸入就有錯;要么就是模塊有問題。這絕對比讀懂源代碼以后再來調(diào)試要快得多!——除非這個別人寫的模塊需要你來維護…… 所以說,調(diào)試的時候

根!本!不!需!要!讀!模!塊!的!源!代!碼!
根!本!不!需!要!讀!模!塊!的!源!代!碼!
根!本!不!需!要!讀!模!塊!的!源!代!碼!
以調(diào)試作為閱讀模塊的源代碼的理由,根本就站不住腳!

  • 仿制目的——這個目的沒啥好說,別人把源代碼給你就是個錯誤。請大家自覺抵制無視他人知識產(chǎn)權(quán)的行為。從技術(shù)上來說,因為要實現(xiàn)自己的版本而需要閱讀他人的實現(xiàn),理解他人的思維,這是一種白盒子行為,因而并不屬于正常使用模塊的范疇,屬于普通的開發(fā)范疇。

  • 既然在模塊的使用過程中,無論是學(xué)習(xí)目的還是調(diào)試目的都不需要閱模塊的源代碼,那么可以明確的得出結(jié)論: 程序員在使用模塊的過程中完全不需要,也不應(yīng)該浪費項目的時間來閱讀源代碼。一個團隊只有做到了這一點,才能借助代碼復(fù)用加快項目開發(fā)的速度。

    當(dāng)一個團隊的項目經(jīng)理理解了“閱讀模塊代碼”對項目的巨大危害,并以制度的形式對程序員的這一行為予以了制止——移除了模塊化實踐的絆腳石;那么技術(shù)經(jīng)理應(yīng)該如何理解、設(shè)計和實踐適合于當(dāng)前團隊和項目需求的模塊化架構(gòu)呢?

    -END-


    |?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|

    |?如有侵權(quán),請聯(lián)系刪除?|


    【1】國內(nèi)MCU能替代國外產(chǎn)品嗎?MCU的未來又將如何?

    【2】35歲真的是程序員的坎兒嗎?

    【3】不同編程語言能耗不同?看這27種語言對比!

    【4】超長干貨為你解析:從串口驅(qū)動到Linux驅(qū)動模型,嵌入式必會!

    【5】本文把TCP/IP講絕了!


    免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

    嵌入式ARM

    掃描二維碼,關(guān)注更多精彩內(nèi)容

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

    LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

    關(guān)鍵字: 驅(qū)動電源

    在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

    關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

    LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

    關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

    根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

    關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

    電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

    關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

    在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

    關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

    LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

    關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

    在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

    關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

    開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

    關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

    LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

    關(guān)鍵字: LED 隧道燈 驅(qū)動電源
    關(guān)閉