<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 嵌入式開(kāi)發(fā)如何快速進(jìn)階?有捷徑?

嵌入式開(kāi)發(fā)如何快速進(jìn)階?有捷徑?

發(fā)布人:xiaomaidashu 時(shí)間:2023-09-08 來(lái)源:工程師 發(fā)布文章

嵌入式軟件開(kāi)發(fā)有沒(méi)有什么捷徑?不定期會(huì )收到類(lèi)似的問(wèn)題,我只想說(shuō):嵌入式軟件開(kāi)發(fā)沒(méi)有捷徑

說(shuō)實(shí)話(huà),有這種想法的人,我其實(shí)想勸你放棄。對于絕大多數普通人,一步一個(gè)腳印就是捷徑。

當然,這個(gè)問(wèn)題可以換個(gè)方式問(wèn),比如:如何才能提升自己編程水平?或者:如何提升自己技能?

對于大部分人,特別是初學(xué)者,我覺(jué)得應該從兩個(gè)方面提升自己技能:

1.多參考、多閱讀優(yōu)秀的開(kāi)源代碼;

2.多實(shí)踐,動(dòng)手敲代碼;

圖片


為啥要參考別人的代碼?

圖片

你要相信,這個(gè)世界上大部分人都是普通人,你的寫(xiě)代碼的很多想法別人都已經(jīng)想過(guò),而且實(shí)踐驗證過(guò)。

最終能保留下來(lái)的,而且運用在優(yōu)秀開(kāi)源項目中的代碼,這種代碼就具有參考價(jià)值。

肯定有人會(huì )反駁,認為**代碼很La圾,自己寫(xiě)的代碼肯定比**代碼要好。有這種想法的人,往往自己很菜,卻非要認為自己很牛逼。

當然,不排除有那種確實(shí)很牛逼的人,但這種人又有多少呢,反正我自認為我是一個(gè)普通人,我要向優(yōu)秀的人學(xué)習的地方還有很多。

圖片

何為優(yōu)秀的代碼?

圖片

何為優(yōu)秀的代碼?可能每個(gè)人的定義不同,每個(gè)人的側重點(diǎn)也不同。

易讀易懂、結構清晰、邏輯清晰、方便移植......等等包含了所有優(yōu)點(diǎn)的代碼,就是優(yōu)秀的代碼?我覺(jué)得不是!

人無(wú)完人,代碼也肯定多少都存在“瑕疵”,或者說(shuō)多少存在有你認為不滿(mǎn)意的地方。

我認為優(yōu)秀的代碼,首先,它能被許多人使用,并運用在許多成功的項目中。比如:一套控制算法代碼,能成功應用在機械臂、機器人、無(wú)人機等項目中,它就是優(yōu)秀的代碼。

其次,它具有優(yōu)秀代碼的一些基本特性,比如上面說(shuō)的易讀易懂、代碼清晰、方便移植等。

這種對于學(xué)習者不排斥的代碼也算得上優(yōu)秀的代碼,比如:一個(gè)模塊的驅動(dòng)程序、一套串口通信協(xié)議。

再次,就是代碼更多細節,比如:代碼排版格式、注釋、命名等。

圖片

哪里有優(yōu)秀的代碼?

圖片

我覺(jué)得程序員不應該問(wèn)這樣的問(wèn)題。我反過(guò)來(lái)問(wèn)你吧,你看大家一般把代碼開(kāi)源在什么地方?

當然是代碼托管的網(wǎng)站啊,GitHub是目前世界上最大的代碼托管平臺:

https://github.com/

當然,除了GitHub之外,還有國內的Gitee代碼托管平臺:

https://gitee.com/

這倆代碼托管平臺眾多大公司都在上面貢獻了優(yōu)秀的代碼,微軟、谷歌、騰訊、阿里這些公司都有代碼庫。

同時(shí),你會(huì )發(fā)現平時(shí)我們使用的一些開(kāi)源代碼,在GitHub平臺上都有。比如:RTOS內核及組件、MCU廠(chǎng)家驅動(dòng)代碼、通信協(xié)議等源代碼。

圖片

多動(dòng)手寫(xiě)代碼

圖片

實(shí)踐是檢驗真理的唯一標準,這句話(huà)相信大家都聽(tīng)說(shuō)過(guò)。

如果只看書(shū)不動(dòng)手敲代碼就能掌握程序開(kāi)發(fā),你覺(jué)得這個(gè)程序員能寫(xiě)出好的代碼嗎?很多人基礎理論很不錯,但實(shí)踐操作起來(lái)各種問(wèn)題、各種不懂。

比如下面這樣寫(xiě):





if(i = 1){  //...}

你可能認為是對的,編譯也是對的,但實(shí)際這代碼有bug。

編程是一個(gè)很注重實(shí)踐的工作,因為現實(shí)中存在各種不確定的因素,比如:你寫(xiě)的函數,有可能因為傳入的參數過(guò)大導致內存溢出。

代碼寫(xiě)出來(lái)了還不算有本事,編譯0警告0錯誤,并成功運行起來(lái),你學(xué)的理論知識才發(fā)揮了作用。

圖片

編程習慣

圖片

這里說(shuō)的多動(dòng)手寫(xiě)代碼,不只是為了寫(xiě)代碼而寫(xiě)代碼,寫(xiě)代碼的同時(shí),要培養良好的編程習慣。

如果養成了不良的編程習慣,后期改變可能很難。

比如函數、變量以“中文字母”方式命名:




int DianYa;int CaiJiDianYa(void);

還比如:不寫(xiě)注釋、源代碼不分類(lèi)、命名混亂等。

很多人初學(xué)的時(shí)候可能都沒(méi)有意識,想到什么就寫(xiě)什么,所有功能在main中就實(shí)現了。

這里就要回到上面的內容,多參考別人優(yōu)秀的代碼。當然,不同階段參考的代碼不同,初學(xué)者可以參考一些基礎教程配套的代碼,有工作經(jīng)驗的工程師應該多參看成功項目的源代碼。

看看別人怎樣命名、怎么寫(xiě)注釋、怎么將代碼分類(lèi)等。

圖片

編程思維

圖片

做小項目時(shí),可能幾百行代碼,一個(gè)main就搞定了,這時(shí)你可能覺(jué)得編程思維不重要好。

但項目做大了,你就會(huì )發(fā)現以小項目的編程方式不能完成了,這個(gè)時(shí)候就要考慮軟件架構、結構化、模塊化了。

對于初學(xué)者來(lái)說(shuō),一下就要掌握軟件架構、模塊化設計可能有點(diǎn)難,但是,可以慢慢培養自己的編程思維。

舉一個(gè)簡(jiǎn)單的模塊化的例子,你做一個(gè)小車(chē),你把“運動(dòng)部分”的代碼歸為一類(lèi)(模塊化),對應的文件命名可以為 bsp_motion, app_motion,函數命名為 Motion_xxx 等。

當然,還有很多地方,你可以都歸類(lèi)為 Motion,比如:











#define MOTION_PWM_TIMx              TIM9#define MOTION_PWM_TIM_CLK           RCC_APB2Periph_TIM9#define MOTION_PWM_TIM_GPIO_CLK      RCC_AHB1Periph_GPIOE#define MOTION_PWM_TIM_PIN           GPIO_Pin_5#define MOTION_PWM_TIM_GPIO_PORT     GPIOE#define MOTION_PWM_TIM_SOURCE        GPIO_PinSource5#define MOTION_PWM_TIM_AF            GPIO_AF_TIM9#define MOTION_PWM_TIM_OCxInit       TIM_OC1Init#define MOTION_PWM_TIM_SetComparex   TIM_SetCompare1#define MOTION_PWM_COUNTER_CLOCK     10000000

其實(shí),說(shuō)的再多,看的再多,不如自己行動(dòng)起來(lái)敲代碼,過(guò)程中你肯定會(huì )遇到各種各樣的問(wèn)題。

你用心解決這些問(wèn)題的過(guò)程,就是你成長(cháng)的過(guò)程。最后,如何證明你編碼水平提升了? 答:回看自己以前代碼,如果覺(jué)得爛,那就說(shuō)明你提升了。


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: 嵌入式

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>