91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

代碼復(fù)用真的可以節(jié)省開(kāi)發(fā)時(shí)間,加快項(xiàng)目研發(fā)速度嗎

Q4MP_gh_c472c21 ? 來(lái)源:嵌入式ARM ? 作者:嵌入式ARM ? 2020-11-18 16:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

對(duì)很多人來(lái),嵌入式軟件開(kāi)發(fā)過(guò)程中模塊化(Modularization)是一個(gè)海市蜃樓、是一個(gè)書(shū)面詞匯、是一個(gè)過(guò)氣的時(shí)尚——模塊化似乎從未真正的實(shí)現(xiàn)過(guò)。吹牛時(shí)人們常不屑的說(shuō):沒(méi)吃過(guò)豬肉,但還沒(méi)看過(guò)豬跑么?事實(shí)上,如果討論的對(duì)象是嵌入式軟件,很多人可能真的沒(méi)有看過(guò)豬跑。在話(huà)題變得更像都市傳說(shuō)的之前,我想問(wèn)一個(gè)問(wèn)題:

為什么要模塊化?

有經(jīng)驗(yàn)的人會(huì)說(shuō):

為了代碼復(fù)用(Code Reuse)

進(jìn)一步——“為什么模塊化可以實(shí)現(xiàn)代碼復(fù)用呢?”很多人會(huì)說(shuō):

你這不是抬杠嗎?明擺著的,代碼做成了模塊,那么別的項(xiàng)目就可以直接使用了,模塊里的這部分代碼就得到了復(fù)用。

更進(jìn)一步——“代碼復(fù)用又是為了什么呢?”聽(tīng)到這里項(xiàng)目經(jīng)理們深吸了最后一口煙屁股,順手丟到腳邊、踩滅、起身準(zhǔn)備離開(kāi):

代碼復(fù)用可以節(jié)省開(kāi)發(fā)時(shí)間,加快項(xiàng)目研發(fā)速度。

為了把嘴邊的那句“你們慢慢聊,我還有事”噎回去,我們?cè)賳?wèn)一個(gè)問(wèn)題:

實(shí)際項(xiàng)目開(kāi)發(fā)中,用模塊的時(shí)候,項(xiàng)目的進(jìn)度真的加快了么?時(shí)間真的節(jié)省了么?

項(xiàng)目經(jīng)理們不動(dòng)了,抬起到半空中的屁股慢慢的坐了下來(lái)。這次,他們的語(yǔ)氣是認(rèn)真的:

不,使用模塊通常并不一定能加快項(xiàng)目進(jìn)度。老實(shí)說(shuō),用別人的模塊,程序員常常要認(rèn)真理解模塊的功能和代碼才能在調(diào)試的時(shí)候確認(rèn)問(wèn)題的范圍。你知道,很多時(shí)候看懂他人代碼所用的時(shí)間比自己重新設(shè)計(jì)一個(gè)更長(zhǎng)。

周?chē)簧俪绦騿T都投來(lái)贊同的眼光,有的甚至很認(rèn)真的點(diǎn)了點(diǎn)頭。實(shí)際上,這里我們已經(jīng)發(fā)現(xiàn),在實(shí)踐中,拋開(kāi)用于模塊化的技術(shù)不談,使用模塊實(shí)現(xiàn)代碼復(fù)用本身往往并不能加快一個(gè)團(tuán)隊(duì)的開(kāi)發(fā)速度——那么我們要模塊化做什么?

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

代碼復(fù)用的目的或者說(shuō)動(dòng)機(jī)是節(jié)省開(kāi)發(fā)時(shí)間

實(shí)際執(zhí)行中,程序員因?yàn)榉N種原因,在使用模塊時(shí)總是要花費(fèi)大量時(shí)間讀懂了代碼才能“放心地”去使用它。

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

通過(guò)上面的分析,很容易看出,模塊化就是為了通過(guò)復(fù)用代碼來(lái)加快開(kāi)發(fā)速度,而正是程序員閱讀要復(fù)用的代碼讓這一努力付之東流。由此,我們可以非常直接的得出結(jié)論:

使用模塊時(shí),必須阻止程序員閱讀要復(fù)用的代碼

或者換一種說(shuō)法:

使用模塊時(shí),必須專(zhuān)注于模塊的使用,而必須有意忽視模塊的實(shí)現(xiàn)邏輯,必須要在心理上信任模塊。簡(jiǎn)而言之,必須把模塊視作黑盒子!

很容易發(fā)現(xiàn),上面的結(jié)論是站在項(xiàng)目經(jīng)理的視角得出的,因?yàn)轫?xiàng)目經(jīng)理關(guān)注的是項(xiàng)目本身,是各類(lèi)資源的合理利用,是項(xiàng)目的進(jìn)度——項(xiàng)目經(jīng)理唯一不需要也不應(yīng)該關(guān)注的是具體的技術(shù)實(shí)現(xiàn)細(xì)節(jié)。那么從第一線(xiàn)程序員的視角來(lái)看這個(gè)問(wèn)題:

為什么程序員要閱讀模塊的代碼實(shí)現(xiàn)呢?

筆者問(wèn)過(guò)不同從業(yè)時(shí)間/經(jīng)驗(yàn)的程序員,從過(guò)來(lái)的的角度來(lái)看,無(wú)非是以下幾個(gè)原因:

學(xué)習(xí)目的——想知道別人是怎么實(shí)現(xiàn)的。很多程序員認(rèn)為通過(guò)閱讀別人的代碼能夠快速的學(xué)習(xí)他人的經(jīng)驗(yàn)從而提升自己。 然而,從項(xiàng)目管理的角度來(lái)看這個(gè)問(wèn)題,程序員利用業(yè)余時(shí)間閱讀他人的代碼來(lái)提升自己無(wú)可厚非,或者說(shuō)是值得提倡的,但犧牲寶貴的項(xiàng)目時(shí)間來(lái)閱讀模塊的實(shí)現(xiàn)代碼而不是專(zhuān)注于模塊的使用(使用模塊快速的實(shí)現(xiàn)項(xiàng)目所需的功能),這對(duì)項(xiàng)目本身是弊遠(yuǎn)大于利的——閱讀代碼帶來(lái)的是程序員的能力提升,這是對(duì)團(tuán)隊(duì)來(lái)說(shuō)的遠(yuǎn)期利好,但這一利好對(duì)項(xiàng)目本身的時(shí)效性卻微乎其微——俗話(huà)說(shuō)遠(yuǎn)水不解近渴就是這個(gè)意思。

實(shí)際上,項(xiàng)目經(jīng)理通常要根據(jù)程序員的已有能力來(lái)分配任務(wù),而不會(huì)寄希望于程序員通過(guò)閱讀模塊代碼獲得提升以后再來(lái)回報(bào)眼前這個(gè)火燒眉毛的項(xiàng)目——如果真有項(xiàng)目經(jīng)理這么做了,那只能說(shuō),進(jìn)度慢了完全不是程序員閱讀模塊代碼的錯(cuò),而是他最直接的用人問(wèn)題——我也只能相信,也許他真的無(wú)人可用了。 所以結(jié)論就是:嚴(yán)禁工作時(shí)間以學(xué)習(xí)為目的閱讀模塊源代碼。

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

要有源代碼,否則就不會(huì)調(diào)試了

必然要閱讀模塊的代碼,否則就不知道究竟這個(gè)源代碼是不是對(duì)的

必然要讀懂模塊的代碼,否則怎么能體“自己的程序出錯(cuò)完全是模塊的代碼寫(xiě)的不好”。

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

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

既然在模塊的使用過(guò)程中,無(wú)論是學(xué)習(xí)目的還是調(diào)試目的都不需要閱模塊的源代碼,那么可以明確的得出結(jié)論:程序員在使用模塊的過(guò)程中完全不需要,也不應(yīng)該浪費(fèi)項(xiàng)目的時(shí)間來(lái)閱讀源代碼。一個(gè)團(tuán)隊(duì)只有做到了這一點(diǎn),才能借助代碼復(fù)用加快項(xiàng)目開(kāi)發(fā)的速度。 當(dāng)一個(gè)團(tuán)隊(duì)的項(xiàng)目經(jīng)理理解了“閱讀模塊代碼”對(duì)項(xiàng)目的巨大危害,并以制度的形式對(duì)程序員的這一行為予以了制止——移除了模塊化實(shí)踐的絆腳石;那么技術(shù)經(jīng)理應(yīng)該如何理解、設(shè)計(jì)和實(shí)踐適合于當(dāng)前團(tuán)隊(duì)和項(xiàng)目需求的模塊化架構(gòu)呢?

責(zé)任編輯:xj

原文標(biāo)題:嵌入式為什么要編程模塊化和代碼復(fù)用?很多人都沒(méi)真正理解!

文章出處:【微信公眾號(hào):嵌入式ARM】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5202

    文章

    20540

    瀏覽量

    335634
  • 編程
    +關(guān)注

    關(guān)注

    90

    文章

    3718

    瀏覽量

    97295
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4973

    瀏覽量

    74184

原文標(biāo)題:嵌入式為什么要編程模塊化和代碼復(fù)用?很多人都沒(méi)真正理解!

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    AI 輔助代碼修復(fù):嵌入式軟件開(kāi)發(fā)的突破性進(jìn)展

    憑借 AI 輔助修復(fù),開(kāi)發(fā)人員不僅能實(shí)現(xiàn)“邊寫(xiě)邊分析”,還能做到“邊寫(xiě)邊修復(fù)”。這不僅帶來(lái)了更準(zhǔn)確、更安全的軟件,還優(yōu)化了缺陷檢測(cè)與修復(fù)的左移流程,提升了開(kāi)發(fā)速度,進(jìn)而全面增強(qiáng)了嵌入式項(xiàng)目
    的頭像 發(fā)表于 03-26 11:19 ?558次閱讀
    AI 輔助<b class='flag-5'>代碼</b>修復(fù):嵌入式軟件<b class='flag-5'>開(kāi)發(fā)</b>的突破性進(jìn)展

    項(xiàng)目數(shù)據(jù)稀缺,算法開(kāi)發(fā)怎么辦?

    算法的開(kāi)發(fā)需要進(jìn)行大量的數(shù)據(jù)標(biāo)注,來(lái)創(chuàng)建適合的算法模型,這個(gè)過(guò)程需要花費(fèi)大量的時(shí)間精力。因此,基于這樣的前提,許多大公司就可以挑選項(xiàng)目進(jìn)行開(kāi)發(fā)
    的頭像 發(fā)表于 02-03 17:51 ?134次閱讀
    <b class='flag-5'>項(xiàng)目</b>數(shù)據(jù)稀缺,算法<b class='flag-5'>開(kāi)發(fā)</b>怎么辦?

    SWD端口復(fù)用為GPIO功能

    可以將SWD的SWDCLK和SWDIO兩個(gè)端口復(fù)用為GPIO功能。 3.1 SWD端口復(fù)用為GPIO功能 SWCLK(PA14)與SWDIO(PA13)引腳可以
    發(fā)表于 01-29 06:56

    20個(gè)低代碼開(kāi)發(fā)平臺(tái)多維度對(duì)比:解鎖企業(yè)應(yīng)用開(kāi)發(fā)新動(dòng)能

    一、行業(yè)痛點(diǎn)剖析 1.1 開(kāi)發(fā)周期冗長(zhǎng) 在傳統(tǒng)應(yīng)用開(kāi)發(fā)模式下,一個(gè)完整的項(xiàng)目從需求分析階段開(kāi)始,便需要投入大量時(shí)間。開(kāi)發(fā)團(tuán)隊(duì)要與業(yè)務(wù)部門(mén)反復(fù)
    的頭像 發(fā)表于 11-05 17:04 ?741次閱讀

    主流低代碼開(kāi)發(fā)平臺(tái)有哪些:加速數(shù)字化轉(zhuǎn)型的核心力量

    。無(wú)論是大型企業(yè)還是中小企業(yè),都在通過(guò)低代碼開(kāi)發(fā)平臺(tái)縮短項(xiàng)目周期、降低開(kāi)發(fā)成本,讓業(yè)務(wù)人員也能深度參與到應(yīng)用構(gòu)建中,推動(dòng)業(yè)務(wù)與技術(shù)的深度融合。 行業(yè)趨勢(shì) 從行業(yè)發(fā)展來(lái)看,低
    的頭像 發(fā)表于 11-03 16:53 ?637次閱讀

    代碼開(kāi)發(fā)平臺(tái)推薦:2025國(guó)內(nèi)低代碼開(kāi)發(fā)平臺(tái)排名TOP10

    代碼開(kāi)發(fā)平臺(tái)排行榜 在企業(yè)數(shù)字化轉(zhuǎn)型的浪潮中,低代碼開(kāi)發(fā)平臺(tái)正逐漸成為企業(yè)實(shí)現(xiàn)高效開(kāi)發(fā)和快速迭代的重要工具。隨著技術(shù)的不斷進(jìn)步和市場(chǎng)需求的
    的頭像 發(fā)表于 10-28 10:22 ?829次閱讀

    淘寶圖片搜索接口開(kāi)發(fā)實(shí)戰(zhàn):從 CNN 特征提取到商品匹配(附避坑手冊(cè) + 可復(fù)用代碼

    本文詳解淘寶圖片搜索接口開(kāi)發(fā)全流程,涵蓋CNN特征提取、商品匹配、參數(shù)配置及400/429等高頻報(bào)錯(cuò)解決方案,附合規(guī)避坑指南與可復(fù)用代碼,助你高效實(shí)現(xiàn)圖像搜商品功能。
    的頭像 發(fā)表于 10-21 10:03 ?601次閱讀

    LT3763怎么加快啟動(dòng)時(shí)間呢?

    需要輸出單脈沖,或者間隔時(shí)間長(zhǎng)的脈沖波形。輸出啟動(dòng)很慢,有什么方法能提高速度
    發(fā)表于 08-11 06:19

    干擾可以提高測(cè)量精度,是真的嗎?

    一、前言 水可以引燃蠟燭,是真的嗎?是真的! 蛇怕雄黃,是真的嗎?是假的! 上述兩個(gè)現(xiàn)象,已經(jīng)由央視 財(cái)經(jīng)頻道《是真的嗎?》揭秘。 今天要探
    的頭像 發(fā)表于 08-04 09:28 ?760次閱讀
    干擾<b class='flag-5'>可以</b>提高測(cè)量精度,是<b class='flag-5'>真的</b>嗎?

    Ansible代碼上線(xiàn)項(xiàng)目實(shí)戰(zhàn)案例

    在DevOps浪潮中,自動(dòng)化部署已經(jīng)成為每個(gè)運(yùn)維工程師的必備技能。今天我將分享一個(gè)完整的Ansible代碼上線(xiàn)項(xiàng)目實(shí)戰(zhàn)案例,讓你的部署效率提升10倍!
    的頭像 發(fā)表于 07-24 14:03 ?652次閱讀

    HarmonyOS 代碼工坊的指尖開(kāi)發(fā),讓 APP 開(kāi)發(fā)所見(jiàn)即所得

    沙盤(pán)被直接搬入了移動(dòng)設(shè)備本身。眼尖的開(kāi)發(fā)者應(yīng)該已經(jīng)發(fā)現(xiàn),最近華為應(yīng)用市場(chǎng)“應(yīng)用嘗鮮”專(zhuān)區(qū)里,上架了一款名為“HarmonyOS 代碼工坊”的新應(yīng)用,下載量持續(xù)攀升。 開(kāi)發(fā)者只需要下載“HarmonyOS
    的頭像 發(fā)表于 06-24 12:08 ?868次閱讀
    HarmonyOS <b class='flag-5'>代碼</b>工坊的指尖<b class='flag-5'>開(kāi)發(fā)</b>,讓 APP <b class='flag-5'>開(kāi)發(fā)</b>所見(jiàn)即所得

    STM32IDE如何設(shè)定代碼到ITCM中運(yùn)行?

    近期使用STM32MUX生成STM32IDE的代碼(MCU是STM32H743),目前希望可以將部分代碼定位到ITCM中運(yùn)行,加快處理速度,
    發(fā)表于 06-24 06:45

    如何在恩智浦FRDM開(kāi)發(fā)平臺(tái)上實(shí)現(xiàn)代碼的高效復(fù)用

    從零開(kāi)始評(píng)估微控制器可能充滿(mǎn)挑戰(zhàn)。即使在編寫(xiě)代碼之前,開(kāi)發(fā)人員也需要深入了解想要使用的外設(shè)的特性。它們是否能夠在不同產(chǎn)品間以一致方式運(yùn)行?這些所謂的可移植性究竟有多可靠?面對(duì)這些不確定性,創(chuàng)建真正可移植的代碼似乎是一項(xiàng)艱巨的任務(wù)
    的頭像 發(fā)表于 05-27 14:35 ?1096次閱讀
    如何在恩智浦FRDM<b class='flag-5'>開(kāi)發(fā)</b>平臺(tái)上實(shí)現(xiàn)<b class='flag-5'>代碼</b>的高效<b class='flag-5'>復(fù)用</b>

    項(xiàng)目加速秘籍:一站式PCBA技術(shù)支持的實(shí)際價(jià)值

    Circuit Board Assembly)環(huán)節(jié),技術(shù)支持的質(zhì)量直接影響到開(kāi)發(fā)速度、產(chǎn)品性能乃至整體成本控制。相比單純的生產(chǎn)代工,具備完整技術(shù)支持能力的一站式PCBA服務(wù),能夠?yàn)?b class='flag-5'>研發(fā)團(tuán)隊(duì)節(jié)
    的頭像 發(fā)表于 04-30 17:49 ?607次閱讀

    MCUXpresso_24.12.148/FRDM-K22F調(diào)試會(huì)話(huà)啟動(dòng)速度非常慢,怎么解決?

    任何錯(cuò)誤消息。加載速度非常慢。加載 Debug 會(huì)話(huà)后,調(diào)試似乎以正常的響應(yīng)速度進(jìn)行。 如果我構(gòu)建并調(diào)試一個(gè) NXP 示例項(xiàng)目,則 Debug 會(huì)話(huà)幾乎立即出現(xiàn) - 只需幾秒鐘。 我在 Ubuntu 22.04 上構(gòu)建。 請(qǐng)
    發(fā)表于 04-02 08:26