亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

我們一直談?wù)摗皩懘a”,但你會(huì)“讀代碼”嗎?

2i18ns / 816人閱讀

摘要:只有能看懂代碼,你才能快速準(zhǔn)確地定位代碼中的問題。要寫出很的代碼,少不了閱讀優(yōu)秀的源碼。我們的論壇和答疑群里,有一些同學(xué)會(huì)查看并解答其他人的代碼問題。實(shí)際上,我覺得就是沒看懂你只是看懂了每一行代碼的意思,但并沒有理解整個(gè)代碼的設(shè)計(jì)。

編程,又被稱作“ 寫代碼 ”。這個(gè)說法有可能會(huì)帶來一點(diǎn)點(diǎn)誤解,讓人覺得如何“寫”是學(xué)習(xí)編程要解決的主要問題。但事實(shí)并非如此。盡管最終代碼要在鍵盤上敲出來,但這個(gè)過程在開發(fā)中的實(shí)際時(shí)間占比可能要遠(yuǎn)遠(yuǎn)小于你的預(yù)期。編寫之前的 設(shè)計(jì) ,編寫之后的 調(diào)試 ,以及 閱讀 他人的代碼,這些會(huì)花費(fèi)比“寫”更多的時(shí)間。

關(guān)于調(diào)試 debug,我們?cè)谏弦黄恼?開發(fā)5分鐘,調(diào)試2小時(shí) - 該如何debug? 里已經(jīng)有所介紹。今天說說另一個(gè)事情: 讀代碼

為什么要讀代碼

讀代碼通常有兩種原因:一是 開發(fā)過程中不得不去讀 ,二是 為了學(xué)習(xí)和提升編程能力

真實(shí)的開發(fā)中,很少有獨(dú)自開發(fā)的項(xiàng)目,大多數(shù)項(xiàng)目都是 多人合作開發(fā) ,或多或少都需要閱讀別人的代碼,了解接口和具體實(shí)現(xiàn)等。在軟件公司里,你也極有可能 接手其他同事的代碼 ,這通常不是個(gè)令人愉快的事情,但也得硬著頭皮去讀。哪怕你跟同事分工明確,耦合度極低,也沒有接手“祖?zhèn)鞔a”,那也免不了 使用一些第三方庫和框架 。當(dāng)使用中遇到問題而文檔和搜索都無法解決的時(shí)候,讀其源碼是必須的。

開發(fā)中讀代碼大多數(shù)被動(dòng)的。出于學(xué)習(xí)和提升的目的,主動(dòng)讀代碼也很有必要。這也是我們今天討論的重點(diǎn):

1. 提高編程能力 。學(xué)習(xí)都要從模仿開始做起,不管是入門時(shí)候閱讀教程里的示例代碼,還是進(jìn)階階段閱讀優(yōu)秀項(xiàng)目源碼,都是很好的學(xué)習(xí)方式。否則沒有標(biāo)桿,僅憑自己悶頭寫,往往事倍功半。

2. 提高 debug 能力 。對(duì)代碼的閱讀,本身就是一種能力,是需要練習(xí)積累的。只有能看懂代碼,你才能快速準(zhǔn)確地定位代碼中的問題。

3. 良好的代碼風(fēng)格 。Python 是一門優(yōu)美的語言, Readability counts (可讀性很重要)是寫在 Python 之禪 里的?!伴_發(fā)”不僅要寫可以執(zhí)行的代碼,更是 要寫別人讀得懂的代碼 ,這對(duì)代碼的維護(hù)和擴(kuò)展大有好處。要寫出很 pythonic 的代碼,少不了閱讀優(yōu)秀的源碼。

4. 交流學(xué)習(xí)的機(jī)會(huì) 。閱讀別人代碼的同時(shí),一定也伴隨著和其他開發(fā)者的交流討論,這對(duì)一個(gè)開發(fā)者的成長(zhǎng)是很重要的。我們的論壇和答疑群里,有一些同學(xué)會(huì)查看并解答其他人的代碼問題。這個(gè)操作不僅是單純地幫助別人,對(duì)自己也是一種的提高。更進(jìn)一步,你甚至可以通過閱讀代碼參與到一些 開源項(xiàng)目 ,與高手交流。

如何讀代碼

既然讀代碼是有益且必要的,那么該如何讀代碼呢?這里給幾點(diǎn)建議:

1. 有目的的閱讀 。對(duì)于想通過閱讀源碼提升能力的同學(xué),首先要明確自己的目標(biāo)是什么。雖然讀源碼好處多多,但也不是人人都適合。在學(xué)習(xí)初期,還是應(yīng)當(dāng) 以系統(tǒng)學(xué)習(xí)為主 。否則連基本的語法、數(shù)據(jù)結(jié)構(gòu)、函數(shù)、模塊都還不夠熟悉,直接看代碼只能是一臉懵逼。等到了可以讀源碼的程度,也要選擇 適合難度的代碼 ,以及 自己熟悉或感興趣的方向 開始閱讀, 在精不在多 。

2. 自上而下,由表及里 。如果你想閱讀一個(gè)外部庫的代碼,首先你應(yīng)當(dāng)去讀下它的文檔,了解它解決了什么問題,有哪些功能;然后再看看它的示例代碼,如何被使用;最后才是開始看源碼。閱讀的時(shí)候,先看項(xiàng)目的文件結(jié)構(gòu),有哪些功能模塊;再看類、函數(shù)的組織;最后再深入實(shí)現(xiàn)的細(xì)節(jié)。

3. 了解基本的設(shè)計(jì)模式 。設(shè)計(jì)模式不是具體的編程技術(shù),卻普遍存在于開發(fā)之中。找本設(shè)計(jì)模式的教程學(xué)一學(xué)(推薦《Head First Design Pattern》),再閱讀代碼,你會(huì)更容易理解別人為什么這么設(shè)計(jì)。

4. 選個(gè)趁手的編輯器 。你不可能用記事本或者自帶的 IDLE 來閱讀源碼。熟練 跳轉(zhuǎn)函數(shù)定義、跳轉(zhuǎn)函數(shù)調(diào)用、查找、斷點(diǎn) 等操作,你才能愉快地閱讀源碼。另外說句, 折疊代碼 是個(gè)好功能,會(huì)讓你更清晰地觀察代碼結(jié)構(gòu)。這些 PyCharm 都可以給你,相關(guān)介紹可在 公眾號(hào)對(duì)話里回復(fù)關(guān)鍵字 pycharm

5. 嘗試動(dòng)手修改 ??创a是單向的,更好的方式是邊看邊改,那怕僅僅是一些簡(jiǎn)單的輸出也好。腦中設(shè)想下某段代碼的作用,通過修改運(yùn)行驗(yàn)證你的想法,這樣的交互可以鍛煉你對(duì)代碼的理解。譬如我們的教程里有個(gè) pygame 做的打飛機(jī)游戲 ,有些同學(xué)看了就會(huì)想,我能不能把子彈改成三排,能不能把敵機(jī)改成會(huì)左右移動(dòng)等等。這樣就會(huì)比你簡(jiǎn)單地看一遍再照抄一遍好很多。

6. 默寫,對(duì)比 。當(dāng)你認(rèn)為自己理解代碼之后,把它關(guān)掉,自己實(shí)現(xiàn)一遍,完成后再與原代碼進(jìn)行對(duì)比。很多同學(xué)跟我說過,代碼能看懂,就是自己寫不出來。實(shí)際上,我覺得就是沒看懂:你只是看懂了每一行代碼的意思,但并沒有 理解整個(gè)代碼的設(shè)計(jì) 。從簡(jiǎn)單的代碼做起,重復(fù)這樣的過程。

讀哪些代碼

說了那么多,到底該讀哪些代碼?

1. 教程里的代碼 。新手不要急于求成,想一口吃成個(gè)大胖子。市面上評(píng)分較高的教程書籍,里面的代碼都不會(huì)太差。認(rèn)定一本后, 從頭到尾的示例代碼都認(rèn)真地閱讀、理解、運(yùn)行(要手打不要復(fù)制) 。這是最簡(jiǎn)單最有效的方式,然而卻并不是人人都能做到。依然有不少人寧愿相信只看幾期在線視頻就能學(xué)會(huì)。

2. 看官方示例的代碼 。大多數(shù)優(yōu)秀項(xiàng)目都提供了詳盡的文檔,包含 Quick Start、Tutorial 之類的新手引導(dǎo) 。在學(xué)習(xí)初期,這些代碼就是很好的例子。比如我們之前文章這個(gè)男人讓你的爬蟲開發(fā)效率提升8倍 里介紹過的 requests 庫,它的文檔就很清晰,還是中文的。

3. 看 Python 的內(nèi)置代碼 。如果你用 PyCharm 之類的 IDE,很方便跳轉(zhuǎn)或直接查看 Python 自身的代碼。比如前文截圖中就是我們常用的 random.py 的代碼??梢詮拇祟悊挝募a看起。

4. 優(yōu)秀的第三方庫 。這類有很多,不過難度對(duì)初學(xué)者來說可能有一點(diǎn)高,可在進(jìn)階時(shí)考慮。依然是推薦下大神 Kenneth Reitz 的項(xiàng)目,不僅僅是 requests ,例如他的 records、envoy 等小項(xiàng)目也是值得一讀的。另外有個(gè)經(jīng)典項(xiàng)目叫做 500 line or less ,都是不超過 500 http://aosabook.org/blog/

5. 關(guān)于 代碼風(fēng)格 ,先讀一讀這份指南:

https://pythonguidecn.readthedocs.io/zh/latest/writing/style.html#code-style

-

上次我們的送書活動(dòng),征集了大家的許多代碼。在此列出一些還不錯(cuò)的學(xué)生作品,有興趣的同學(xué)可自行關(guān)注交流:

小說閱讀微信小程序:https://github.com/moxier/BookApplet

工程師執(zhí)業(yè)證書查詢(桌面版):https://paste.ubuntu.com/p/rV3sTfVJdp/

EOS的桌面版輔助工具:https://github.com/oraclechain/eosdevhelper

Python3.x+Fiddler抓取APP數(shù)據(jù)(blog里還有其他很多不錯(cuò)的文章):https://segmentfault.com/a/1190000015571256

Maya綁定工具集:https://github.com/TDChina/Rigging-Tool

TensorFlow練習(xí):https://github.com/difanyi/DeepLearning

恭喜被選中的 10 位同學(xué)。也感謝其他提交代碼同學(xué)的積極參與,這里不一一列出。沒有被選中也不用遺憾,項(xiàng)目本身就是你們給自己最好的獎(jiǎng)勵(lì)。之后我們還會(huì)有類似的活動(dòng)。希望可能在下次看到你們的進(jìn)步。

下課!

════

其他文章及回答:

如何自學(xué)Python | 新手引導(dǎo) | 精選Python問答 | 如何debug? | Python單詞表 | 知乎下載器 | 人工智能 | 嘻哈 | 爬蟲 | 我用Python | 高考 | requests | AI平臺(tái)

歡迎搜索及關(guān)注: Crossin的編程教室

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/42533.html

相關(guān)文章

  • 如何保持學(xué)習(xí)編程的動(dòng)力

    摘要:上次翻過一篇我是如何在自學(xué)編程個(gè)月后找到工作的,是一個(gè)編程自學(xué)者的經(jīng)驗(yàn)之談。如果你想通過學(xué)習(xí)編程來改善你的生活,你不該總想著這些快速成功的案例。 有人問我, Reddit 是什么網(wǎng)站,我想了下說: 美國(guó)貼吧 。 但話說回來,關(guān)注了一陣子我發(fā)現(xiàn),Reddit 上的討論真要比貼吧不知道高到哪里去了,甚至比不少知乎回答要有價(jià)值。而且感覺下面的討論氛圍也更好些。 我在上面關(guān)注了 learnpr...

    lastSeries 評(píng)論0 收藏0
  • 云計(jì)算未來是什么樣子?

    摘要:年是云計(jì)算落地元年評(píng)判標(biāo)準(zhǔn)有兩個(gè)至頂網(wǎng)各位網(wǎng)友大家好,這里是第七屆中國(guó)云計(jì)算大會(huì)的現(xiàn)場(chǎng),我們請(qǐng)來了青云黃允松接受采訪。你認(rèn)為云計(jì)算發(fā)展這幾年是一個(gè)什么樣的變化黃允松我特別喜歡談?wù)撨@種話題,我覺得其實(shí)到年一切都在預(yù)期中,但眼不見為虛。 在不久前在京舉辦的第七屆中國(guó)云計(jì)算大會(huì)上,連續(xù)三次參加大會(huì)的青云QingCloud CEO黃允松接受了ZD至頂網(wǎng)的視頻專訪,分享了他眼中的云計(jì)算市場(chǎng)、互聯(lián)...

    tulayang 評(píng)論0 收藏0
  • 數(shù)據(jù)工程師妹子養(yǎng)成手記——數(shù)據(jù)庫篇

    摘要:是什么呀是一個(gè)和不太一樣的數(shù)據(jù)庫。懷疑是同時(shí)聯(lián)了四個(gè)集合的數(shù)據(jù)造成的。這本書的定位是和的應(yīng)用,所以有意弱化了數(shù)據(jù)庫的搭建維護(hù)和底層優(yōu)化。所以本書可能不適合數(shù)據(jù)庫工程師。 這篇文章沒有代碼,請(qǐng)放心閱讀。 程序員最寶貴的東西是生命,生命屬于程序員只有一次。一個(gè)程序員的一生應(yīng)該這樣度過:當(dāng)她回首往事的時(shí)候,她不會(huì)因?yàn)榇罱ōh(huán)境浪費(fèi)時(shí)間而悔恨,也不會(huì)因?yàn)榧簾o法運(yùn)行而羞恥。這樣,在她開發(fā)的時(shí)候,...

    yexiaobai 評(píng)論0 收藏0
  • 數(shù)據(jù)工程師妹子養(yǎng)成手記——數(shù)據(jù)庫篇

    摘要:是什么呀是一個(gè)和不太一樣的數(shù)據(jù)庫。懷疑是同時(shí)聯(lián)了四個(gè)集合的數(shù)據(jù)造成的。這本書的定位是和的應(yīng)用,所以有意弱化了數(shù)據(jù)庫的搭建維護(hù)和底層優(yōu)化。所以本書可能不適合數(shù)據(jù)庫工程師。 這篇文章沒有代碼,請(qǐng)放心閱讀。 程序員最寶貴的東西是生命,生命屬于程序員只有一次。一個(gè)程序員的一生應(yīng)該這樣度過:當(dāng)她回首往事的時(shí)候,她不會(huì)因?yàn)榇罱ōh(huán)境浪費(fèi)時(shí)間而悔恨,也不會(huì)因?yàn)榧簾o法運(yùn)行而羞恥。這樣,在她開發(fā)的時(shí)候,...

    atinosun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

2i18ns

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<