欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

如何能快速提升編程能力

multisim ? 來源:嵌入式客棧 ? 作者:逸珺 ? 2021-08-18 09:47 ? 次閱讀

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

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

為什么要會讀代碼?

考慮這樣一些場景:

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

這是我YY的一個學(xué)寫代碼的學(xué)習(xí)模型,所以讀了,理解了,在自己就可以發(fā)揮了,然后書本上、他人的知識,就流進(jìn)了自己的腦瓜了。

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

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

Case n: ......

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

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

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

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

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

博采眾長

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

正如牛頓所說:如果我能比別人看的更遠(yuǎn),只因?yàn)槲艺驹诰奕说募缟稀?/p>

解決難題

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

比如做Linux編程的時候,遇到某個API出錯,或許在網(wǎng)上查找半天,都找不到答案。實(shí)在找不到答案了,嘗試讀一讀內(nèi)核底層相關(guān)代碼,有時候就能發(fā)現(xiàn)問題的原因。

開闊視野

很多時候,日常工作內(nèi)容或許只是很小的領(lǐng)域,修復(fù)一些小的bug,修改一些小的功能等。如果只專注這些小的點(diǎn),個人成長一定會受到局限。

如果能善于發(fā)現(xiàn)一些新的感興趣的領(lǐng)域,并去閱讀相關(guān)的代碼,則一定會提升自己的編程能力的。

所以為什么要讀代碼呢?

找bug

review別人的代碼

學(xué)習(xí)

維護(hù)等

如何閱讀代碼呢?

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

先粗后細(xì)

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

main在哪里?

開了幾個任務(wù)?

哪些是關(guān)鍵任務(wù),主要功能鏈?zhǔn)窃趺礃拥模?/p>

任務(wù)間如何協(xié)作的?任務(wù)的執(zhí)行周期是如何安排的?

使用哪些硬件外設(shè)?

使用了哪些中斷?中斷與哪些任務(wù)發(fā)生了交互?

從軟件角度看,大致有哪些子系統(tǒng)?

是否有關(guān)鍵算法?

是否使用開源組件?

......

先不關(guān)心很細(xì)的函數(shù)具體怎么寫,數(shù)據(jù)結(jié)構(gòu)是如何設(shè)計的?這樣,我大致能先有一個總體認(rèn)識,然后在對自己感興趣的進(jìn)行細(xì)讀。當(dāng)然如果是review別人的代碼則就另當(dāng)別論了。

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

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

是否支持命令行傳啟動參數(shù)?

是否是守護(hù)進(jìn)程?

開了哪些線程?

大致有哪些子系統(tǒng)?

使用了哪些開源組件?

是否使用驅(qū)動,是否有通訊等?

......

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

善做筆記

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

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

— Linus Torvalds

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

閱讀某一個具體函數(shù)時,如果函數(shù)內(nèi)或者模塊內(nèi)具有狀態(tài)機(jī),如果這部分是需要仔細(xì)理解的時候,我就會將其狀態(tài)機(jī)圖,先繪制出來。比如,之前寫的modbus協(xié)議中的狀態(tài)圖:

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

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

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

善用工具

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

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

多多調(diào)試

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

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

一個經(jīng)常調(diào)試的程序猿,鍵盤上F10,F11這些鍵大都壞的比較快。

總結(jié)一下

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

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

責(zé)任編輯:haq

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

    關(guān)注

    88

    文章

    3638

    瀏覽量

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

    關(guān)注

    30

    文章

    4830

    瀏覽量

    69094

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    外資制造業(yè)可利用AI提升決策能力

    實(shí)現(xiàn)其他目標(biāo)。通過運(yùn)籌優(yōu)化技術(shù),企業(yè)可以提升有限資源的配置效率,快速適應(yīng)市場變化。尤其在競爭日益激烈的存量市場中,靈活精準(zhǔn)的規(guī)劃與決策能力無疑是企業(yè)保持競爭力的關(guān)鍵。
    的頭像 發(fā)表于 12-24 10:01 ?213次閱讀

    何能使DSP接收處理AD轉(zhuǎn)換的數(shù)據(jù)?

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

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

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

    云知學(xué)院開展AI賦能專項能力提升培訓(xùn)

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

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

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

    智慧水利山洪災(zāi)害防御能力提升系統(tǒng)

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

    如何提高LoRa抗干擾能力提升通信質(zhì)量的幾種技術(shù)分享

    LoRa(Long?Range)技術(shù)憑借其遠(yuǎn)距離傳輸、低功耗和高抗干擾能力,在物聯(lián)網(wǎng)(IoT)領(lǐng)域得到了廣泛應(yīng)用。 LoRa技術(shù) 強(qiáng)大的抗干擾能力不僅提高了信號的穩(wěn)定性和通信距離,還提升了數(shù)據(jù)
    的頭像 發(fā)表于 07-23 18:37 ?1481次閱讀

    如何提升嵌入式編程能力?

    如何提升嵌入式編程能力? 要提升嵌入式編程能力,可以從以下幾點(diǎn)學(xué)習(xí): 1. 理解硬件:熟悉你正
    發(fā)表于 06-21 10:01

    如何提升代碼質(zhì)量與效率的秘訣

    提高編程能力其實(shí)沒有捷徑,最佳方式就是多寫代碼。 不過,除了寫大量代碼,提升編程能力還需要大量閱讀別人寫的代碼。
    的頭像 發(fā)表于 04-28 14:53 ?459次閱讀
    如何<b class='flag-5'>提升</b>代碼質(zhì)量與效率的秘訣

    stm32CubeIDE如何能生成Lib?

    請問stm32CubeIDE如何能生成 Lib?
    發(fā)表于 04-12 07:57

    分布式智慧終端提升環(huán)保監(jiān)測能力的成功案例

    訊維分布式智慧終端在提升環(huán)保監(jiān)測能力方面的成功案例,可能涉及其在不同環(huán)保監(jiān)測場景中的應(yīng)用和實(shí)際效果。以下是一個假設(shè)性的成功案例,以展示訊維分布式智慧終端如何在實(shí)際操作中提升環(huán)保監(jiān)測能力
    的頭像 發(fā)表于 04-08 15:29 ?412次閱讀

    何能找到高性價比的MOS管讓產(chǎn)品力提升呢?

    三輪車控制器的競爭品牌在近兩年越來越多,不僅有衡翔、宗彭、美驅(qū)科技等知名的,也有錫安馳、正華仲、DIY、星浩、涌勝、天王鑫、圣創(chuàng)、安百潔、安路班、利瑞、大騰、鴻潤達(dá)等競爭對手。如何能找到高性價比的MOS管讓產(chǎn)品力提升呢?
    的頭像 發(fā)表于 04-01 10:31 ?716次閱讀
    如<b class='flag-5'>何能</b>找到高性價比的MOS管讓產(chǎn)品力<b class='flag-5'>提升</b>呢?

    關(guān)于STM8S字長度問題和自動快速字節(jié)編程問題求解

    (1)字長度問題:RM0016文檔 字編程部分介紹1字=4字節(jié),PM0044介紹1字=2字節(jié) (例如LDW指令),因此這兩個文檔不是矛盾嗎? (2)自動快速字節(jié)編程問題:上文字節(jié)編程
    發(fā)表于 03-14 08:24

    提升生產(chǎn)能力的必備工具——MES系統(tǒng)自動排產(chǎn)

    MES系統(tǒng)自動排產(chǎn)作為提升生產(chǎn)能力的必備工具,可以幫助企業(yè)實(shí)現(xiàn)生產(chǎn)計劃的快速生成和優(yōu)化,提高生產(chǎn)效率和質(zhì)量,降低生產(chǎn)成本。
    的頭像 發(fā)表于 02-26 14:04 ?1149次閱讀
    <b class='flag-5'>提升</b>生產(chǎn)<b class='flag-5'>能力</b>的必備工具——MES系統(tǒng)自動排產(chǎn)

    快速全面了解大模型長文本能力

    那關(guān)于LLM的長文本能力,目前業(yè)界通常都是怎么做的?有哪些技術(shù)點(diǎn)或者方向?今天我們就來總結(jié)一波,供大家快速全面了解。
    發(fā)表于 02-22 14:04 ?935次閱讀
    <b class='flag-5'>快速</b>全面了解大模型長文本<b class='flag-5'>能力</b>