<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          嵌入式軟件開發(fā)沒有捷徑

          共 3315字,需瀏覽 7分鐘

           ·

          2023-08-14 13:40

          關注+星標公眾,不錯過精彩內容

          作者 | strongerHuang

          微信公眾號 | 嵌入式專欄


          嵌入式軟件開發(fā)有沒有什么捷徑?不定期會收到類似的問題,我只想說:嵌入式軟件開發(fā)沒有捷徑


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


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

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

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

          2.多實踐,動手敲代碼;


          為啥要參考別人的代碼?

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


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


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


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


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

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


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


          人無完人,代碼也肯定多少都存在“瑕疵”,或者說多少存在有你認為不滿意的地方。


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


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


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


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


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

          我覺得程序員不應該問這樣的問題。我反過來問你吧,你看大家一般把代碼開源在什么地方?


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

          https://github.com/


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

          https://gitee.com/


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


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


          多動手寫代碼

          實踐是檢驗真理的唯一標準,這句話相信大家都聽說過。


          如果只看書不動手敲代碼就能掌握程序開發(fā),你覺得這個程序員能寫出好的代碼嗎?很多人基礎理論很不錯,但實踐操作起來各種問題、各種不懂。


          比如下面這樣寫:

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

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


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


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


          編程習慣


          這里說的多動手寫代碼,不只是為了寫代碼而寫代碼,寫代碼的同時,要培養(yǎng)良好的編程習慣。


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


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

          int DianYa;
          int CaiJiDianYa(void);


          還比如:不寫注釋、源代碼不分類、命名混亂等。


          很多人初學的時候可能都沒有意識,想到什么就寫什么,所有功能在main中就實現(xiàn)了。


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


          看看別人怎樣命名、怎么寫注釋、怎么將代碼分類等。


          編程思維


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


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


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


          舉一個簡單的模塊化的例子,你做一個小車,你把“運動部分的代碼歸為一類(模塊化),對應的文件命名可以為 bsp_motion, app_motion,函數(shù)命名為 Motion_xxx 等。


          當然,還有很多地方,你可以都歸類為 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


          其實,說的再多,看的再多,不如自己行動起來敲代碼,過程中你肯定會遇到各種各樣的問題。


          你用心解決這些問題的過程,就是你成長的過程

          最后,如何證明你編碼水平提升了? 
          答:回看自己以前代碼,如果覺得爛,那就說明你提升了。
          版權聲明:本文來源網(wǎng)絡,免費傳達知識,版權歸原作者所有。如涉及作品版權問題,請聯(lián)系我進行刪除。

          ????????????????  END  ???????????????

             

          關注我的微信公眾號,回復“加群”按規(guī)則加入技術交流群。

             

          點擊“閱讀原文”查看更多分享,歡迎點分享、收藏、點贊、在看。

          瀏覽 2620
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天日天天操天天射 | 奇米狠狠色777久久久欧美老妇 | 中文字幕一级A片免费看 | 久久黄色视频免费观看 | 围产精品久久久久久久黄无码 |