嵌入式為什么要編程模塊化和代碼復(fù)用?很多人都沒真正理解!
為什么要模塊化?
為了代碼復(fù)用(Code Reuse)
你這不是抬杠嗎?明擺著的,代碼做成了模塊,那么別的項(xiàng)目就可以直接使用了,模塊里的這部分代碼就得到了復(fù)用。
代碼復(fù)用可以節(jié)省開發(fā)時(shí)間,加快項(xiàng)目研發(fā)速度。
實(shí)際項(xiàng)目開發(fā)中,用模塊的時(shí)候,項(xiàng)目的進(jìn)度真的加快了么?時(shí)間真的節(jié)省了么?
不,使用模塊通常并不一定能加快項(xiàng)目進(jìn)度。老實(shí)說,用別人的模塊,程序員常常要認(rèn)真理解模塊的功能和代碼才能在調(diào)試的時(shí)候確認(rèn)問題的范圍。你知道,很多時(shí)候看懂他人代碼所用的時(shí)間比自己重新設(shè)計(jì)一個(gè)更長。
-
代碼復(fù)用的目的或者說動(dòng)機(jī)是 節(jié)省開發(fā)時(shí)間 -
實(shí)際執(zhí)行中,程序員因?yàn)榉N種原因,在使用模塊時(shí)總是要 花費(fèi)大量時(shí)間讀懂了代碼才能“放心地”去使用它。
使用模塊時(shí),必須阻止程序員閱讀要復(fù)用的代碼
使用模塊時(shí),必須專注于模塊的使用,而必須有意忽視模塊的實(shí)現(xiàn)邏輯,必須要在心理上信任模塊。簡而言之,必須把模塊視作黑盒子!
為什么程序員要閱讀模塊的代碼實(shí)現(xiàn)呢?
-
學(xué)習(xí)目的——想知道別人是怎么實(shí)現(xiàn)的。很多程序員認(rèn)為通過閱讀別人的代碼能夠快速的學(xué)習(xí)他人的經(jīng)驗(yàn)從而提升自己。
然而,從項(xiàng)目管理的角度來看這個(gè)問題,程序員利用業(yè)余時(shí)間閱讀他人的代碼來提升自己無可厚非,或者說是值得提倡的,但犧牲寶貴的項(xiàng)目時(shí)間來閱讀模塊的實(shí)現(xiàn)代碼而不是專注于模塊的使用(使用模塊快速的實(shí)現(xiàn)項(xiàng)目所需的功能),這對(duì)項(xiàng)目本身是弊遠(yuǎn)大于利的——閱讀代碼帶來的是程序員的能力提升,這是對(duì)團(tuán)隊(duì)來說的遠(yuǎn)期利好,但這一利好對(duì)項(xiàng)目本身的時(shí)效性卻微乎其微——俗話說遠(yuǎn)水不解近渴就是這個(gè)意思。
實(shí)際上,項(xiàng)目經(jīng)理通常要根據(jù)程序員的已有能力來分配任務(wù),而不會(huì)寄希望于程序員通過閱讀模塊代碼獲得提升以后再來回報(bào)眼前這個(gè)火燒眉毛的項(xiàng)目——如果真有項(xiàng)目經(jīng)理這么做了,那只能說,進(jìn)度慢了完全不是程序員閱讀模塊代碼的錯(cuò),而是他最直接的用人問題——我也只能相信,也許他真的無人可用了。
所以結(jié)論就是:嚴(yán)禁工作時(shí)間以學(xué)習(xí)為目的閱讀模塊源代碼。
-
調(diào)試目的——也許并非所有的程序員都對(duì)自己的代碼質(zhì)量天然的自信,但幾乎所有的程序員都對(duì)別人寫的代碼(模塊)天然的不放心——就像孔乙己一樣,必須親眼看了酒保從黃酒壇子里舀出酒來而沒有摻水才放心——所以程序出了問題,必然要懷疑模塊,而且甚至有很多不負(fù)責(zé)任的程序員天然的會(huì)首先懷疑模塊——不是自己寫的,怎么能放心——所以調(diào)試的時(shí)候必然:
-
要有源代碼,否則就不會(huì)調(diào)試了 -
必然要閱讀模塊的代碼,否則就不知道究竟這個(gè)源代碼是不是對(duì)的 -
必然要讀懂模塊的代碼,否則怎么能體“自己的程序出錯(cuò)完全是模塊的代碼寫的不好”。
-END-
|?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|
|?如有侵權(quán),請(qǐng)聯(lián)系刪除?|
【1】國內(nèi)MCU能替代國外產(chǎn)品嗎?MCU的未來又將如何?
【2】35歲真的是程序員的坎兒嗎?
【3】不同編程語言能耗不同?看這27種語言對(duì)比!
【4】超長干貨為你解析:從串口驅(qū)動(dòng)到Linux驅(qū)動(dòng)模型,嵌入式必會(huì)!
【5】本文把TCP/IP講絕了!
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請(qǐng)聯(lián)系我們,謝謝!