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

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

為什么要模塊化?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

或者換一種說法:

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

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

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

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

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

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

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

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

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

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

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

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

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

責(zé)任編輯:xj

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

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

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

    關(guān)注

    5202

    文章

    20522

    瀏覽量

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

    關(guān)注

    90

    文章

    3718

    瀏覽量

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

    關(guān)注

    30

    文章

    4973

    瀏覽量

    74155

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

    哪些 AI 編程工具能夠根據(jù)項目需求進行定制?企業(yè)級研發(fā)場景的能力評估與實踐趨勢

    特點、技術(shù)架構(gòu)、代碼規(guī)范而深度適配的 AI 編程工具,正在成為提高研發(fā)效率、保障交付質(zhì)量的關(guān)鍵。 在這一趨勢下,企業(yè)開始更加關(guān)注: 哪些工具不僅能“寫代碼”,更能“根據(jù)項目需求定制”?
    的頭像 發(fā)表于 12-08 16:10 ?729次閱讀

    20個低代碼開發(fā)平臺多維度對比:解鎖企業(yè)應(yīng)用開發(fā)新動能

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

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

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

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

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

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

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

    LT3763怎么加快啟動時間呢?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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