女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(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ò)豬跑。在話題變得更像都市傳說(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í),必須專注于模塊的使用,而必須有意忽視模塊的實(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é)。那么從第一線程序員的視角來(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)代碼而不是專注于模塊的使用(使用模塊快速的實(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í)效性卻微乎其微——俗話說(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é),專注于模塊接口的輸入輸出行為——給什么輸入,期望什么輸出,實(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)注

    5149

    文章

    19655

    瀏覽量

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

    關(guān)注

    88

    文章

    3689

    瀏覽量

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

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70668

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    項(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 ?240次閱讀

    零知開(kāi)源平臺(tái)重磅升級(jí)!嵌入式開(kāi)發(fā)進(jìn)入“渦輪增壓”時(shí)代

    ;Arduino項(xiàng)目移植效率驚人,編譯速度直接碾壓原環(huán)境" ▍為什么選擇零知渦輪引擎? ? 開(kāi)源架構(gòu)完全透明 ? 企業(yè)級(jí)代碼安全保障 ? 智能錯(cuò)誤預(yù)診斷系統(tǒng) ? 實(shí)時(shí)編譯進(jìn)度可視化 ? 深度硬件加速支持 立即升級(jí)您
    發(fā)表于 03-11 11:22

    如何加快STM32G473上電時(shí)間?

    現(xiàn)在采用STM32G473,采用外部8M晶振,工作為72M,測(cè)試上電3.3V到時(shí)鐘初始化完,大約需要5ms,有沒(méi)有什么措施加快上電時(shí)間?即縮短上電3.3V到時(shí)鐘初始化完成的時(shí)間。
    發(fā)表于 03-07 08:11

    MATLAB中的simulink中仿真速度過(guò)慢,狀態(tài)量數(shù)值很小可以忽略,怎么忽略較小數(shù)值,加快仿真進(jìn)度呢?

    10^-6s),導(dǎo)致我仿真10s要用特別久的時(shí)間。 在仿真的過(guò)程中,很多的狀態(tài)量其實(shí)可以看作零,但是MATLAB都有帶入計(jì)算,怎么才能設(shè)置其最小計(jì)算單位,減小計(jì)算量呢? 所以想請(qǐng)教一下大佬,怎么
    發(fā)表于 02-23 23:08

    代碼加密、源代碼防泄漏c/c++與git服務(wù)器開(kāi)發(fā)環(huán)境

    代碼加密對(duì)于很多研發(fā)性單位來(lái)說(shuō)是至關(guān)重要的,當(dāng)然每家企業(yè)的業(yè)務(wù)需求不同所用的開(kāi)發(fā)環(huán)境及開(kāi)發(fā)語(yǔ)言也不盡相同,今天主要來(lái)講一下c++及git開(kāi)發(fā)
    的頭像 發(fā)表于 02-12 15:26 ?522次閱讀
    源<b class='flag-5'>代碼</b>加密、源<b class='flag-5'>代碼</b>防泄漏c/c++與git服務(wù)器<b class='flag-5'>開(kāi)發(fā)</b>環(huán)境

    代碼與傳統(tǒng)開(kāi)發(fā)的區(qū)別 低代碼與無(wú)代碼開(kāi)發(fā)的區(qū)別

    的工具和圖形界面來(lái)縮短開(kāi)發(fā)時(shí)間和降低技術(shù)門(mén)檻。以下是對(duì)低代碼開(kāi)發(fā)與傳統(tǒng)開(kāi)發(fā)的詳細(xì)對(duì)比: 適用人群 傳統(tǒng)開(kāi)
    的頭像 發(fā)表于 01-31 10:48 ?613次閱讀

    CMOS開(kāi)關(guān)和多路復(fù)用器中的Ron調(diào)制;它是什么及如何預(yù)測(cè)它對(duì)信號(hào)失真的影響

    電子發(fā)燒友網(wǎng)站提供《CMOS開(kāi)關(guān)和多路復(fù)用器中的Ron調(diào)制;它是什么及如何預(yù)測(cè)它對(duì)信號(hào)失真的影響.pdf》資料免費(fèi)下載
    發(fā)表于 01-15 16:23 ?1次下載
    CMOS開(kāi)關(guān)和多路<b class='flag-5'>復(fù)用</b>器中的Ron調(diào)制;它是什么及如何預(yù)測(cè)它對(duì)信號(hào)失<b class='flag-5'>真的</b>影響

    代碼在敏捷開(kāi)發(fā)中的應(yīng)用

    代碼平臺(tái)的定義 低代碼平臺(tái)提供了一個(gè)可視化的、拖放式的用戶界面,允許開(kāi)發(fā)者通過(guò)圖形化的方式快速構(gòu)建應(yīng)用程序,而無(wú)需編寫(xiě)大量的代碼。這些平臺(tái)通常包括預(yù)構(gòu)建的模板、組件和邏輯模塊,使得
    的頭像 發(fā)表于 01-07 09:58 ?443次閱讀

    探討篇(三):代碼復(fù)用的智慧 - 提升架構(gòu)的效率與可維護(hù)性

    作者:京東物流 馮志文 前兩篇從服務(wù)粒度和服務(wù)內(nèi)的分層架構(gòu)角度探討,本文繼續(xù)從服務(wù)間代碼復(fù)用角度探討。 背景 在分布式架構(gòu)中,代碼復(fù)用是個(gè)難題。那么如何處理
    的頭像 發(fā)表于 12-27 15:58 ?606次閱讀
    探討篇(三):<b class='flag-5'>代碼</b><b class='flag-5'>復(fù)用</b>的智慧 - 提升架構(gòu)的效率與可維護(hù)性

    LG AI Research使用亞馬遜云科技開(kāi)發(fā)AI模型 加快癌癥診斷速度

    LG集團(tuán)旗下AI智庫(kù)利用亞馬遜云科技進(jìn)行癌癥早期風(fēng)險(xiǎn)識(shí)別 Amazon SageMaker助力LG AI Research將基因測(cè)試時(shí)間從兩周縮短至不到一分鐘,加快患者診斷速度 北京2024年12月
    的頭像 發(fā)表于 12-16 15:13 ?364次閱讀
    LG AI Research使用亞馬遜云科技<b class='flag-5'>開(kāi)發(fā)</b>AI模型 <b class='flag-5'>加快</b>癌癥診斷<b class='flag-5'>速度</b>

    使用瑞薩AnalogPAK SLG47001/03節(jié)省開(kāi)發(fā)時(shí)間

    在當(dāng)今快速發(fā)展的技術(shù)市場(chǎng)中,對(duì)更快、更高效的產(chǎn)品開(kāi)發(fā)的需求比以往任何時(shí)候都高。企業(yè)一直在尋找簡(jiǎn)化流程和縮短上市時(shí)間的方法。有助于節(jié)省時(shí)間、簡(jiǎn)化設(shè)計(jì)和降低成本的產(chǎn)品對(duì)于保持競(jìng)爭(zhēng)力至關(guān)重要。
    的頭像 發(fā)表于 12-12 10:54 ?597次閱讀
    使用瑞薩AnalogPAK SLG47001/03<b class='flag-5'>節(jié)省</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>時(shí)間</b>

    STM32連接機(jī)智云,代碼移植,NTP實(shí)時(shí)時(shí)間獲?。ㄒ唬?/a>

    目錄一、機(jī)智云介紹二、固件下載三、項(xiàng)目例程下載四、代碼移植五、代碼編寫(xiě)準(zhǔn)備(已配置完畢,正式開(kāi)始編寫(xiě)代碼)六、設(shè)備配對(duì)與連接七、NTP(網(wǎng)絡(luò)時(shí)間
    的頭像 發(fā)表于 11-19 01:01 ?1123次閱讀
    STM32連接機(jī)智云,<b class='flag-5'>代碼</b>移植,NTP實(shí)時(shí)<b class='flag-5'>時(shí)間</b>獲取(一)

    LMK05318在TICS Pro中怎樣設(shè)置,可以加快同步的速度,實(shí)現(xiàn)幾分鐘之內(nèi)相位同步?

    同步可能需要數(shù)小時(shí)。請(qǐng)問(wèn)在TICS Pro中怎樣設(shè)置,可以加快同步的速度,實(shí)現(xiàn)幾分鐘之內(nèi)相位同步?可以接受同步過(guò)程中輸出頻率的偏差,但要求相位快速同步。附件是我這次的使用的配置文件,請(qǐng)
    發(fā)表于 11-12 06:46

    PPEC:零成本技術(shù)交底,賦能電源開(kāi)發(fā)新范式

    PPEC和其他元器件進(jìn)行電源生產(chǎn)。三、合作方案優(yōu)勢(shì) ▍節(jié)省研發(fā)團(tuán)隊(duì):基于獨(dú)家PPEC免代碼開(kāi)發(fā)技術(shù),無(wú)需組建或維護(hù)研發(fā)團(tuán)隊(duì),降低人力成本。▍
    發(fā)表于 09-06 19:06

    AM625SIP處理器如何透過(guò)整合LPDDR4,加快開(kāi)發(fā)速度

    電子發(fā)燒友網(wǎng)站提供《AM625SIP處理器如何透過(guò)整合LPDDR4,加快開(kāi)發(fā)速度.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 10:47 ?0次下載
    AM625SIP處理器如何透過(guò)整合LPDDR4,<b class='flag-5'>加快</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>速度</b>