91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

如何能快速提升編程能力

multisim ? 來源:嵌入式客棧 ? 作者:逸珺 ? 2021-08-18 09:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

有小伙伴問:如何能快速提升編程能力?這感覺永遠沒有正確答案,每個人都有自己的套路,今天就來聊聊我對這個問題的看法:

學會高效讀代碼,就是一個不錯的辦法。閱讀代碼,可能和寫代碼一樣重要!

為什么要會讀代碼?

考慮這樣一些場景:

Case 1: 你還在讀書,照著教程,照著例子,學習編程。剛開始,大概率是先讀別人的代碼,理解別人的代碼,而非一上來,就開始寫。

這是我YY的一個學寫代碼的學習模型,所以讀了,理解了,在自己就可以發揮了,然后書本上、他人的知識,就流進了自己的腦瓜了。

Case 2: 一個職場新人,一進公司,就加入一個項目組,那項目代碼真是海了去了!然后老大可能給你一個小小的活,在現有基礎上,添加一個小功能。項目經驗少的童鞋,一下就傻眼了,特么的,這代碼這么多行,文件幾百上千!該從何入手呢?別說改了,看都看不懂!完了,試用期是不是就要被干掉?!

Case 3:你進了一個小公司,技術管理混亂,前任已閃人,你受命接任一個一坨翔一樣的項目,那代碼寫的真是云里霧里,工期又緊,老板又逼著出貨,怎么辦?閃人?可是下家會更好么?跳槽往往是從一個坑里,跳到另一個坑里。所以讀吧,總是要讀的。。。

Case n: ......

學校往往教授的是如何寫代碼,可能從沒有教如何讀代碼。

然而,理想很豐滿,現實很骨感!工作中,你寫代碼的時間可能只占工作時間很少很少的一部分,大部分時間你可能都是在閱讀已有的代碼,當然除非這個項目從0到1都是你一個人干,可即便是自己寫代碼,也是漸進增長、不斷迭代的,也需要不斷反復閱讀自己寫的代碼。

再者,編程與寫文章,有異曲同工之處。編程與寫作相似之處,都是用語言表達寫作者的想法。

對于如何提升寫作,古人曾講:熟讀唐詩三百首,不會作詩也會吟。回想學生時代,老師也常說:讀書破萬卷,下筆如有神!強調寫作需要大量閱讀,讀的多了,寫作能力也會相應提升。閱讀之于寫作,相輔相成,互為促進。

那么大量閱讀別人的代碼,也能提升自己的編程水平。閱讀代碼,個人覺得會有這樣些好處:

博采眾長

優秀的源碼,就如傳世佳作一樣,值得反復揣摩,細細品味。其編寫技巧、設計范式、架構思想,都具有極大的學習借鑒價值。比如一些優秀的開源項目:Linux內核、lwIP、u-boot等等。這些作品都匯集了全球優秀頂級程序員的思想智慧。都是非常優秀的作品,廣為流傳,廣為應用。如果能花些時間去閱讀理解一下其代碼,一定是大有裨益的。

正如牛頓所說:如果我能比別人看的更遠,只因為我站在巨人的肩上。

解決難題

編程生涯中,總會遇到一些感動束手無策的場景。github,搜索都已無能為力的時候。如果說還沒遇到,那一定是機緣未到~

比如做Linux編程的時候,遇到某個API出錯,或許在網上查找半天,都找不到答案。實在找不到答案了,嘗試讀一讀內核底層相關代碼,有時候就能發現問題的原因。

開闊視野

很多時候,日常工作內容或許只是很小的領域,修復一些小的bug,修改一些小的功能等。如果只專注這些小的點,個人成長一定會受到局限。

如果能善于發現一些新的感興趣的領域,并去閱讀相關的代碼,則一定會提升自己的編程能力的。

所以為什么要讀代碼呢?

找bug

review別人的代碼

學習

維護等

如何閱讀代碼呢?

這里聊聊我的一些體會,也未必都對,也未必適合其他的朋友。分享以作交流,如有其他想法,也歡迎大家留言交流。

先粗后細

我一般拿到一份別人的代碼,會先去找這個項目的入口,先梳理個大概的脈絡。如單片機程序,一般會從下面幾個角度先掃一遍:

main在哪里?

開了幾個任務?

哪些是關鍵任務,主要功能鏈是怎么樣的?

任務間如何協作的?任務的執行周期是如何安排的?

使用哪些硬件外設?

使用了哪些中斷?中斷與哪些任務發生了交互?

從軟件角度看,大致有哪些子系統?

是否有關鍵算法

是否使用開源組件?

......

先不關心很細的函數具體怎么寫,數據結構是如何設計的?這樣,我大致能先有一個總體認識,然后在對自己感興趣的進行細讀。當然如果是review別人的代碼則就另當別論了。

如果是Linux應用程序,或者C++應用程序,我也大致采用差不多的思路,先讀個大概,然后再細讀。比如對一個Linux應用程序,會先了解這些方面的概要信息:

入口在哪個文件?一般都是main函數。

是否支持命令行傳啟動參數?

是否是守護進程?

開了哪些線程?

大致有哪些子系統?

使用了哪些開源組件?

是否使用驅動,是否有通訊等?

......

如果項目采用cmake或者makefile進行組織的,那么先閱讀下makefile也會是了解項目概要信息的一個比較好的切入點。

善做筆記

在閱讀代碼的概要信息的時候,我比較喜歡做做筆記,畫畫圖。在閱讀代碼的時候,我比較喜歡先去研究代碼中的數據結構。數據結構往往會體現作者抽象問題、對問題建模的一些思路,并使用UML圖畫出來,剛開始可能都不去看每個函數是怎么實現的,只關心與這些數據結構相關有哪些函數以及數據結構間關系。

“Bad programmers worry about the code. Good programmers worry about data structures and their relationships.”

— Linus Torvalds

或許,有的朋友會說,UML不會。不會沒關系,用你習慣自己能看懂的方式都可以,而且即便是用UML也不必過分糾結繪制的圖是否嚴謹。甚至拿支筆在筆記上手繪也可以。不過個人更建議,盡量寫電子筆記,更容易保存和查閱。

閱讀某一個具體函數時,如果函數內或者模塊內具有狀態機,如果這部分是需要仔細理解的時候,我就會將其狀態機圖,先繪制出來。比如,之前寫的modbus協議中的狀態圖:

cf30fd6a-ff5a-11eb-9bcf-12bb97331649.png

這樣做有個好處,邊繪圖邊去理解代碼,就會加速對代碼的理解,對我來說,我如果只用兩只眼睛盯著看,和一邊看一比畫圖效率會低很多。

這樣做還有一個好處,可以將理解以圖的形式記錄下來,如果光用圖還不能表達清楚的時候,我還會再加點文字描述。時間過了很久之后,再來看代碼,可能之前的理解全忘了,可是如果有這樣一份圖文并茂的筆記,我就會很快找回記憶。

善用工具

比如source insght, vs code等工具,都是提高閱讀代碼效率的好工具。盡量熟悉如何使用鍵盤控制閱讀跳轉,用熟了,效率倍增。

另外,還有些工具,可以自動將代碼轉化成類圖等,比如visual studio,可以自動繪制類圖,Enterprise Architect也具有根據代碼生成類圖的功能。具有此類功能的軟件還有很多。有興趣可以搜索一下。

多多調試

如果遇到有的代碼,怎么看也理解不了。這時候可以試著加些打印日志,運行調試一下,也可以使用調試工具進行斷點、單步調試,觀察程序運行的軌跡,數據的變化情況,可能就找到了突破口。

或者嘗試對原有的代碼,做些小的修改,來印證理解,也是不錯的方法。

一個經常調試的程序猿,鍵盤上F10,F11這些鍵大都壞的比較快。

總結一下

把自己閱讀代碼的一些體會分享一下,每個人都會有適合自己的方法。利用適合自己的方法,高效的閱讀代碼,是提升編程的一個行之有效的辦法。

如果我講的這些,如對你有所啟發,也不妨點個贊或者再看,小小的鼓勵一下我。當然你如愿意擴散分享,那就感激不盡啦。

責任編輯:haq

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

    關注

    88

    文章

    3689

    瀏覽量

    95276
  • 代碼
    +關注

    關注

    30

    文章

    4900

    瀏覽量

    70772

原文標題:程序員提高閱讀代碼能力的幾個方法

文章出處:【微信號:A1411464185,微信公眾號:multisim】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    DevEco Studio AI輔助開發工具兩大升級功能 鴻蒙應用開發效率再提升

    對DeepSeek模型增強融合了RAG能力,從生成機制上協同降低模型幻象,并同時提升生成模型的準確性和相關性。 RAG檢索增強的核心機制是通過“檢索-生成”分離架構,將模型輸出嚴格約束在可信數據范圍內
    發表于 04-18 14:43

    如何提升自己的電路設計能力,以及編程能力

    想自己設計一個電路,但是不知道如何開始,需要哪些流程,電路相關的知識融合不到一起去,求教
    發表于 04-09 16:08

    接入DeepSeek后智慧場館的能力提升

    隨著人工智能技術的快速發展,以DeepSeek為代表的大模型技術正在為智慧場館建設帶來革命性的變革。通過接入DeepSeek的先進AI能力, 智慧場館 在運營管理、用戶體驗、安全保障等方面都實現了質
    的頭像 發表于 04-02 11:57 ?232次閱讀

    愛普生可編程晶振SG-8101CE快速燒錄

    愛普生SG-8101CE是一款高性能可編程晶體振蕩器(SPXO),這款晶振采用的小數分頻PLL技術,支持0.67MHz至170MHz的寬廣頻率范圍,其靈活的可編程性和快速燒錄能力,可以
    的頭像 發表于 03-07 13:37 ?378次閱讀
    愛普生可<b class='flag-5'>編程</b>晶振SG-8101CE<b class='flag-5'>快速</b>燒錄

    Triton編譯器如何提升編程效率

    在現代軟件開發中,編譯器扮演著至關重要的角色。它們不僅將高級語言代碼轉換為機器可執行的代碼,還通過各種優化技術提升程序的性能。Triton 編譯器作為一種先進的編譯器,通過多種方式提升編程效率,使得
    的頭像 發表于 12-25 09:12 ?750次閱讀

    外資制造業可利用AI提升決策能力

    實現其他目標。通過運籌優化技術,企業可以提升有限資源的配置效率,快速適應市場變化。尤其在競爭日益激烈的存量市場中,靈活精準的規劃與決策能力無疑是企業保持競爭力的關鍵。
    的頭像 發表于 12-24 10:01 ?523次閱讀

    何能使DSP接收處理AD轉換的數據?

    我正在做一個數據采集,采集8通道脈沖電壓信號,信號頻率為20-400kHz,在TI官網看到的高速多通道ADC都是串行LVDS輸出,我使用的處理器為28335,并沒有LVDS接口,請問如何能使DSP接收處理AD轉換的數據?
    發表于 12-06 06:25

    如何快速入門HAL庫編程 HAL庫與裸機編程的比較

    如何快速入門HAL庫編程快速入門HAL庫編程,可以遵循以下步驟: 了解基礎知識 : 掌握C語言編程基礎,包括變量、數據類型、函數、指針等
    的頭像 發表于 12-02 11:39 ?1140次閱讀

    請問多個ADS1220如何能同步得到采樣結果?

    請問多個ADS1220如何能同步得到采樣結果,或者有沒有與ADS1220功能,性能類似,但是帶有同步控制的ADC?
    發表于 11-29 08:30

    XD08M3232紅外感應單片機擁有哪些配置實現高性能處理能力

    需要12個時鐘周期,而1T8051內核則將這個時間縮短為1個時鐘周期,這極大地提高了指令執行速度,從而在處理數據和執行程序時能夠更快地響應,整體提升了單片機的處理性能。雖然沒有直接表明這是高性能處理能力
    發表于 11-23 15:08

    云知學院開展AI賦能專項能力提升培訓

    為順應時代潮流趨勢,提升員工的工作效率和生產力,培養員工從“能用”到“善用”生成式人工智能工具的能力,近日,元翔廈門空港邀請云知學院開展AI賦能專項能力提升培訓。
    的頭像 發表于 11-21 14:10 ?604次閱讀

    socket 多線程編程實現方法

    在現代網絡編程中,多線程技術被廣泛應用于提高服務器的并發處理能力。Socket編程是網絡通信的基礎,而將多線程技術應用于Socket編程,可以顯著
    的頭像 發表于 11-12 14:16 ?1020次閱讀

    【「倉頡編程快速上手」閱讀體驗】+壹讀后感

    快速進入編程世界的捷徑。無論是想要開啟編程之旅的新手,還是希望提升編程技能的進階者,都能從這本書中收獲頗豐。 下一步準備實戰一些書中的實例,
    發表于 09-06 20:12

    智慧水利山洪災害防御能力提升系統

    一、背景隨著科技的快速發展,智慧水利技術逐漸成為解決水資源管理、水環境保護以及水災防治等問題的關鍵手段。其中,智慧水利山洪災害防御能力提升系統,作為智慧水利的重要組成部分,其在保障人民生命財產安全
    的頭像 發表于 08-05 14:42 ?526次閱讀
    智慧水利山洪災害防御<b class='flag-5'>能力</b><b class='flag-5'>提升</b>系統

    如何提高LoRa抗干擾能力提升通信質量的幾種技術分享

    LoRa(Long?Range)技術憑借其遠距離傳輸、低功耗和高抗干擾能力,在物聯網(IoT)領域得到了廣泛應用。 LoRa技術 強大的抗干擾能力不僅提高了信號的穩定性和通信距離,還提升了數據
    的頭像 發表于 07-23 18:37 ?1832次閱讀
    主站蜘蛛池模板: 色视频2| 色婷婷综合激情视频免费看 | 国产精品三级a三级三级午夜 | 成人爽爽激情在线观看 | 国产精品www夜色影视 | 国产一级淫 | 一卡二卡四卡无卡乱免费网页 | 四虎永久在线观看免费网站网址 | 午夜免费观看_视频在线观看 | 国产免费成人在线视频 | 亚洲一区不卡视频 | 美女扒开内裤无遮挡禁18 | 亚洲成人77777 | 亚洲福利视频网址 | 又色又爽又黄视频 | 国产做爰一区二区 | 亚洲一区二区在线视频 | 日本免费黄色网 | 六月婷婷综合激情 | 国产美女一区二区三区 | 日本免费黄色网 | 天天干天天玩 | 国语自产免费精品视频一区二区 | 夜夜爽天天干 | 日本美女黄色一级片 | 欧美高清一区二区 | 精品四虎免费观看国产高清 | 天天插天天射天天操 | 免费h视频在线观看 | 欧美福利二区 | 欧美成人天天综合天天在线 | 永久视频在线观看 | 天天做爽夜夜做爽 | 欧美18videosex性欧美1819 | 成人欧美一区二区三区的电影 | 成人黄色三级 | 午夜在线观看免费视频 | 男人在线网站 | 美女黄色毛片 | 亚洲欧美强伦一区二区另类 | baoyu污污网站入口免费 |