色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

代碼復用真的可以節省開發時間,加快項目研發速度嗎

Q4MP_gh_c472c21 ? 來源:嵌入式ARM ? 作者:嵌入式ARM ? 2020-11-18 16:26 ? 次閱讀

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

為什么要模塊化?

有經驗的人會說:

為了代碼復用(Code Reuse)

進一步——“為什么模塊化可以實現代碼復用呢?”很多人會說:

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

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

代碼復用可以節省開發時間,加快項目研發速度。

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

實際項目開發中,用模塊的時候,項目的進度真的加快了么?時間真的節省了么?

項目經理們不動了,抬起到半空中的屁股慢慢的坐了下來。這次,他們的語氣是認真的:

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

周圍不少程序員都投來贊同的眼光,有的甚至很認真的點了點頭。實際上,這里我們已經發現,在實踐中,拋開用于模塊化的技術不談,使用模塊實現代碼復用本身往往并不能加快一個團隊的開發速度——那么我們要模塊化做什么?

下結論還為時尚早。從項目經理們的描述可以看出:

代碼復用的目的或者說動機是節省開發時間

實際執行中,程序員因為種種原因,在使用模塊時總是要花費大量時間讀懂了代碼才能“放心地”去使用它。

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

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

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

或者換一種說法:

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

很容易發現,上面的結論是站在項目經理的視角得出的,因為項目經理關注的是項目本身,是各類資源的合理利用,是項目的進度——項目經理唯一不需要也不應該關注的是具體的技術實現細節。那么從第一線程序員的視角來看這個問題:

為什么程序員要閱讀模塊的代碼實現呢?

筆者問過不同從業時間/經驗的程序員,從過來的的角度來看,無非是以下幾個原因:

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

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

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

要有源代碼,否則就不會調試了

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

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

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

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

既然在模塊的使用過程中,無論是學習目的還是調試目的都不需要閱模塊的源代碼,那么可以明確的得出結論:程序員在使用模塊的過程中完全不需要,也不應該浪費項目的時間來閱讀源代碼。一個團隊只有做到了這一點,才能借助代碼復用加快項目開發的速度。 當一個團隊的項目經理理解了“閱讀模塊代碼”對項目的巨大危害,并以制度的形式對程序員的這一行為予以了制止——移除了模塊化實踐的絆腳石;那么技術經理應該如何理解、設計和實踐適合于當前團隊和項目需求的模塊化架構呢?

責任編輯:xj

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5087

    文章

    19148

    瀏覽量

    306196
  • 編程
    +關注

    關注

    88

    文章

    3628

    瀏覽量

    93820
  • 代碼
    +關注

    關注

    30

    文章

    4803

    瀏覽量

    68756

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

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

收藏 人收藏

    評論

    相關推薦

    代碼在敏捷開發中的應用

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

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

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

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

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

    使用瑞薩AnalogPAK SLG47001/03節省開發時間

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

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

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

    LMK05318在TICS Pro中怎樣設置,可以加快同步的速度,實現幾分鐘之內相位同步?

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

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

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

    代碼開發平臺的崛起:優勢、特點與應用

    代碼開發平臺是近年來迅速崛起的一種創新型軟件開發工具,以其高效、靈活的開發模式正顛覆著傳統的開發方式。不再需要編寫大量繁雜的
    的頭像 發表于 04-18 10:43 ?392次閱讀
    低<b class='flag-5'>代碼</b><b class='flag-5'>開發</b>平臺的崛起:優勢、特點與應用

    SOLIDWORKS教育版使學生了解如何加快設計項目速度

    在當今信息爆炸的時代,設計項目速度和效率對于工程專業的學生來說至關重要。SOLIDWORKS教育版作為一款專門為學生設計的3D CAD軟件,不僅提供了強大的設計工具,更致力于幫助學生了解如何加快設計
    的頭像 發表于 04-09 16:00 ?338次閱讀

    stm32h743是不是可以直接用ICache加快一些速度

    stm32h743是不是可以直接用ICache加快一些速度,而不用DCache,DCache配置ram麻煩?
    發表于 03-08 08:01

    Buck/Boost免代碼開發專用芯片正式發布

    PPEC免代碼編程開發優勢,降低了電源開發門檻,縮短研發時間,為電源企業快速賦能。PPEC的標準化模塊應用,已歷經行業眾多頭部客戶
    的頭像 發表于 03-05 08:22 ?599次閱讀
    Buck/Boost免<b class='flag-5'>代碼</b><b class='flag-5'>開發</b>專用芯片正式發布

    Makefile可以做什么?Makefile的基本格式

    Makefile可以根據指定的依賴規則和文件是否有修改來執行命令。常用來編譯軟件源代碼,只需要重新編譯修改過的文件,使得編譯速度大大加快
    的頭像 發表于 01-25 11:18 ?732次閱讀

    代碼可視化開發 快速構建工業物聯網云平臺

    速度為后盾的創新是當今各種規模組織的基礎。在這個持續數字化變革的時代,每個組織都必須隨時準備創新。低編碼就是這樣的創新。Gartner 預測,到 2024 年,65% 的應用程序開發項目將依賴于低
    的頭像 發表于 01-22 16:46 ?1039次閱讀
    低<b class='flag-5'>代碼</b>可視化<b class='flag-5'>開發</b> 快速構建工業物聯網云平臺

    什么是時分復用TDM?時分復用類型 時分復用優劣勢

    什么是時分復用TDM?時分復用類型 時分復用優劣勢? 時分復用TDM是一種常見的多路復用技術,用于將多個低速信號合并成一個高速信號在傳輸線路
    的頭像 發表于 01-16 16:03 ?2856次閱讀

    鴻蒙開發OpenHarmony組件復用案例

    概述 在開發應用時,有些場景下的自定義組件具有相同的組件布局結構,僅有狀態變量等承載數據的差異。這樣的組件緩存起來,需要使用到該組件時直接復用, 減少重復創建和渲染的時間,從而提高應用頁面的加載
    發表于 01-15 17:37
    主站蜘蛛池模板: 精品国产品国语在线不卡| 人人插人人射| 亚洲精品6久久久久中文字幕| 国产3级在线观看| 性一交一无一伦一精一品| 狠狠色色综合网站| 91久久综合精品国产丝袜长腿| 亲胸摸下面激烈免费网站| 国产精品人妻无码77777| 一本久道久久综合婷婷五月| 欧美白妞大战非洲大炮| 国产成人综合视频| 在线视频 国产 日韩 欧美| 欧美日韩北条麻妃一区二区| 国产成人免费在线| 在线成 人av影院| 人C交ZZZ0OOZZZ000| 国产亚洲制服免视频| 1234成人网| 午夜福利免费视频921000电影| 久久久久久久99精品免费观看| 苍井空教师BD在线观看全集| 亚洲区视频在线观看| 日本久久精品毛片一区随边看| 国内精品久久久久影院男同志| 91视频18| 亚洲绝美精品一区二区| 欧美怡红院视频一区二区三区| 国产亚洲精品久久久久久久软件 | 久久er国产精品免费观看2| 99精品电影一区二区免费看| 寻找最美乡村教师颁奖晚会| 牛牛在线1视频| 婚后被调教当众高潮H喷水| 超碰97超碰在线视频哦| 诱受H嗯啊巨肉各种play| 网友自拍偷拍| 妻中蜜在线播放| 恋夜影视列表免费安卓手机版| 国产欧美一区二区三区在线看| AV无码九九久久|