最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

《我的設(shè)計(jì)模式》完結(jié)篇:如何閱讀代碼

2020-10-07 17:07 作者:博毅創(chuàng)為  | 我要投稿

前言

有經(jīng)驗(yàn)的開發(fā)者都清楚,我們大多數(shù)情況下都是基于別人的框架和系統(tǒng)來開發(fā)代碼。

比如開發(fā)一個應(yīng)用,是基于OS來開發(fā);開發(fā)一個游戲基于一個游戲引擎來開發(fā);進(jìn)入到公司里面以后開發(fā)一個業(yè)務(wù)邏輯也是基于公司的框架代碼來開發(fā)。

正因?yàn)槿绱耍喿x別人的代碼,就顯得非常重要。


1 學(xué)會閱讀代碼的好處有哪些?

用好別人的代碼,能節(jié)約成本,而閱讀代碼強(qiáng),就是用好的關(guān)鍵

我們把別人寫好的,成熟的代碼用到項(xiàng)目中能節(jié)約很多開發(fā)成本,縮短項(xiàng)目的周期,所以用好別人的代碼變的很重要。

你能快速地把第三方開源代碼用到項(xiàng)目當(dāng)中,把一個模塊移植過來,這些都能節(jié)約大量成本。

能做到這些,就需要有閱讀代碼的能力和功底。

閱讀代碼能力強(qiáng),就能快速從別人的代碼里找到使用的方法,并把內(nèi)在的邏輯串聯(lián)起來。

別人問我為什么那么快就會用一個框架和庫,我告訴他就是源于閱讀代碼,閱讀代碼的接口組織布局等。


2 閱讀別人的代碼,能學(xué)習(xí)到很多設(shè)計(jì)技巧和模式

我們都喜歡看名人故事,聽名人訪談,想通過名人的一些故事來學(xué)習(xí)一些東西。

對于程序員而言,學(xué)習(xí)大師的開發(fā)技巧,不是看大師的Blog和故事,而是閱讀大師寫的代碼。

比如Linus是如何設(shè)計(jì)內(nèi)核把成千上萬的設(shè)備驅(qū)動管理起來的等等,這些思想我們都可以學(xué)習(xí)。

在閱讀大師寫的代碼的同時,自己也能領(lǐng)會到很多代碼智慧與設(shè)計(jì)哲學(xué)。


3 閱讀別人的代碼,更容易讓我們掌握相關(guān)的知識

當(dāng)我們有了某個領(lǐng)域或模塊的一些基礎(chǔ)知識,就需要更好結(jié)合實(shí)踐來把知識理解透徹。

比如我們學(xué)習(xí)多媒體的時候,IDCT反離散余弦變換等,結(jié)合ffmepg一遍視頻編碼解碼流程,一遍結(jié)合ffmeg來閱讀與學(xué)習(xí),能加深對知識點(diǎn)的理解與掌握;比如我們學(xué)習(xí)設(shè)計(jì)線程池的知識,結(jié)合線程池的代碼來學(xué),更容易讓我們把問題分析的更透徹。


4 閱讀別人的代碼能讓我們積累很多代碼工具模塊

閱讀不同代碼時,我們可以從代碼框架里面獲取寫的好的代碼模塊用到我們的項(xiàng)目中,比如紅黑樹。我一般就使用linux內(nèi)核的紅黑樹,鏈表這些經(jīng)典高效的數(shù)據(jù)結(jié)構(gòu)都來自于一些經(jīng)典的代碼庫。

每每發(fā)現(xiàn)好的代碼的時候,我都會把它們記錄起來,以后可以用到自己的項(xiàng)目框架體系中。


如何閱讀代碼

要閱讀一個龐大的代碼或代碼庫,弄懂里面的內(nèi)部邏輯,并很好的掌握他們用到項(xiàng)目中并不是一件簡單的事情,那么如何搞懂搞透一個代碼庫呢?

代碼相關(guān)的編程語言一定要過關(guān),能清楚的在腦袋里面執(zhí)行代碼

編程語言的核心機(jī)制一定要熟悉,這個是閱讀別人代碼的第一個關(guān)鍵的點(diǎn)。

如果很多語法在你的腦子里面都不熟悉,看不懂,那么能讀懂別人的代碼幾乎是不可能的。

閱讀代碼的時候,每行代碼跑出一個什么樣的結(jié)果,要在腦子里面做到心中有數(shù)。


閱讀代碼要善于處理整體與局部的關(guān)系,先建立全局觀

閱讀代碼時,首先基于函數(shù)、模塊等先把整個邏輯捋清楚,再去看具體的實(shí)現(xiàn)細(xì)節(jié)。

邏輯流程最好是通過函數(shù)名字,模塊名字等來判斷,先把整體的流程搞明白再深入進(jìn)去代碼細(xì)節(jié),不要一開始就深入細(xì)節(jié),這樣你沒有一個全局觀念。

閱讀代碼時要學(xué)會用腦圖記錄起來整個的流程,一邊閱讀一邊把邏輯捋清楚。捋清完邏輯后,就對哪些環(huán)節(jié),哪些入口就有了比較清晰的認(rèn)識,然后結(jié)合數(shù)據(jù)和打印,把整個流程驗(yàn)證一遍。


閱讀代碼一定要先找好入口,找出閱讀的線索

做任何事情要從一個入口開始,入口找的好,后續(xù)就會很順利。

比如我們代碼從main開始跑起,那么你從main函數(shù)開始,就能把整個的邏輯看清楚,所以找到一個合適的入口是非常重要的。

有時候有些代碼不像從main函數(shù)開始那么簡單,可能有多個接口和入口,那么我們就可以把它們作為線索來進(jìn)行分析。把整個代碼框架里面的代碼分成幾條代表性的線索,每次帶著這些線索去閱讀,把內(nèi)部的結(jié)構(gòu)和流程搞明白。


閱讀代碼要學(xué)會搜索,從搜索的結(jié)果中找到邏輯

比如我們看到一個函數(shù)or類,,我們想要看看整個都怎么使用,通過這個函數(shù),把整個流程找出來。那么我們就要從定義在哪里,調(diào)用在哪里都過一遍。

你可以采用搜索的辦法,把項(xiàng)目里面所有的代碼都搜索一遍。

搜索出來結(jié)果以后,就知道在哪些地方調(diào)用了,然后一個一個分析,一個一個看,找出邏輯與線索。

有時候我們的變量被賦值給其他的人,這個時候要搜索其他的,所以一個好的代碼搜索閱讀工具是非常必要的,我這邊用的比較多的是sublime 和source Insight, 一般大項(xiàng)目我都用source Insight。


開始閱讀代碼之前一定要具備相關(guān)的基礎(chǔ)知識

開始閱讀代碼之前還是要準(zhǔn)備好自己的知識認(rèn)知,如果自己什么相關(guān)知識都沒有就去閱讀代碼,搞不出來是正常的。

還是要先積累相關(guān)的知識、基本概念再去閱讀別人的源碼。

具備了相關(guān)的知識以后,腦袋里面基本就知道這個事情大致是怎么完成的,你再去閱讀代碼,你就能很輕松的讀懂了。

比如要你讀懂一個地圖編輯器的工具代碼,如果有做地圖編輯器的步驟和思路,就可以帶著思路去找代碼。

比如地圖數(shù)據(jù)如何編輯生成?生成后的格式是怎么樣的?格式生成后數(shù)據(jù)如何讀取的?讀取到哪里?尋路的時候采用什么算法?尋路的路徑出來后,怎么控制在路徑上行走的?

帶著這些問題去閱讀地圖編輯器的代碼,就能掌握好整個代碼框架庫。雖然不是你寫的,但還是比較清楚的。


總之閱讀好別人的代碼取決你的基礎(chǔ)、知識體系、以及耐心,并非一下就能提升,需要在代碼閱讀中不斷總結(jié),閱讀更多代碼以及積累更多的行業(yè)知。

希望大家堅(jiān)持下來,因?yàn)槟菦Q定了你能否走到系統(tǒng)分析師架構(gòu)師,這個級別閱讀代碼是一個很重要的分水嶺。


不知不覺,《我的設(shè)計(jì)之道》迎來了完結(jié)的時刻。

感謝所有朋友給予的關(guān)注和支持。

結(jié)束并不意味著消散,我認(rèn)為恰恰是一種新生。

在未來的日子里,我將依然會在此分享各種有關(guān)游戲開發(fā)技術(shù)方面的觀點(diǎn)文章,希望新老朋友持續(xù)留意收看。

今天的分享就到這里,下期再見。


《我的設(shè)計(jì)模式》完結(jié)篇:如何閱讀代碼的評論 (共 條)

分享到微博請遵守國家法律
温泉县| 安仁县| 嘉兴市| 普兰县| 建德市| 遂川县| 乡宁县| 海盐县| 吉木萨尔县| 柳河县| 大同市| 卓资县| 平利县| 青州市| 太原市| 徐闻县| 翼城县| 三穗县| 铁岭县| 阿拉尔市| 宝山区| 贵定县| 克山县| 喜德县| 鹤岗市| 偏关县| 马山县| 于田县| 永吉县| 涟源市| 庄浪县| 孝义市| 固安县| 温州市| 黑山县| 海阳市| 英德市| 建水县| 浑源县| 大理市| 永德县|