在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

為什么要模塊化?

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

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

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

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

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

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

為了把嘴邊的那句“你們慢慢聊,我還有事”噎回去,我們再問一個問題:

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

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

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

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

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

代碼復(fù)用的目的或者說動機(jī)是節(jié)省開發(fā)時間

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

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

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

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

或者換一種說法:

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

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

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

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

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

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

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

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

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

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

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

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

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

責(zé)任編輯:xj

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

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

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

    關(guān)注

    5146

    文章

    19598

    瀏覽量

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

    關(guān)注

    88

    文章

    3686

    瀏覽量

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

    關(guān)注

    30

    文章

    4894

    瀏覽量

    70452

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

    如何加快STM32G473上電時間

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    STM32連接機(jī)智云,代碼移植,NTP實(shí)時時間獲取(一)

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

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

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

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

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

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

    電子發(fā)燒友網(wǎng)站提供《AM625SIP處理器如何透過整合LPDDR4,加快開發(fā)速度.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 10:47 ?0次下載
    AM625SIP處理器如何透過整合LPDDR4,<b class='flag-5'>加快</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>速度</b>
    主站蜘蛛池模板: 国产美女特级嫩嫩嫩bbb | 免费观看四虎精品国产永久 | 免费亚洲视频在线观看 | 成人免费国产gav视频在线 | www.91在线 | 奇米四色777亚洲图 奇米影视四色首页手机在线 | 99国产精品久久久久久久成人热 | 国产精品亚洲精品日韩动图 | 亚洲 美腿 欧美 偷拍 | 色婷婷综合激情视频免费看 | 美女被强插 | 午夜影院美女 | a级毛片网 | 国产一级爱c片免费播放 | 天天摸日日添狠狠添婷婷 | 一级特色黄大片 | 福利视频一区二区微拍堂 | 天天色操 | 免播放器av少妇影院 | 天天挨操| 性瘾高h姚蕊全文免费阅读 性做久久久久 | 天天干天天做天天操 | 免费看污视频的网站 | 亚洲第一伊人 | 欧美伊人 | 女人18毛片水多 | 人人做人人爽国产视 | 在线天堂网www资源种子 | 91成人在线免费视频 | 一级特黄性色生活片一区二区 | 国产chinesetube| 色综合久久一区二区三区 | 国产精品国产三级国快看 | 亚洲国产精品久久网午夜 | wwwxx免费| 日本一卡精品视频免费 | 亚洲综合欧美日本另类激情 | 全部免费特黄特色大片视频 | 亚洲一区二区三区中文字幕5566 | 天天干视频在线观看 | 天天做天天玩天天爽天天 |