提高代碼閱讀能力的7種方法

【嵌牛導讀】:在軟件開發(fā)人員的職位描述中有閱讀源代碼。然而,這體驗并不總能令人愉悅。不是每個人都喜歡閱讀別人的代碼,因為他們覺得那很乏味,甚至有時令人感到沮喪。那么我們?nèi)绾尾拍芙鉀Q這個問題呢?

【嵌牛鼻子】:代碼閱讀

【嵌牛提問】:代碼閱讀技巧與編碼能力的關(guān)系?

【嵌牛正文】:

有些案例中,你開始閱讀別人的代碼,最終會產(chǎn)生一種痛苦的感覺,因為你不能理解這些代碼,或者說代碼寫得不好。大多數(shù)開發(fā)人員希望把重點放在編寫代碼上而不是閱讀代碼上,他們沒有意識到閱讀代碼也是一項重要技能。


圖片發(fā)自簡書App

可以說,閱讀源代碼有很多的益處。閱讀代碼的受益是巨大的??梢园丫幋a與文學相比較。大多數(shù)作家在他們寫作的時候注重閱讀名著。原因是你不能在真空中創(chuàng)造出任何東西(閉門造車)。你必須從不同的來源吸取精華, 在此基礎(chǔ)上去工作,才能創(chuàng)造出你自己的杰作。編寫代碼亦是如此。

要想能寫出好的代碼,你必須讀很多好的代碼。通過這種方式,你可以了解其他開發(fā)人員是如何思考的,以及如何解決特定的問題的,還可以發(fā)現(xiàn)他們的不足之處。你可以從閱讀別人的代碼中獲取不同的想法、風格和模式,讓你的知識逐漸增長。

一言以蔽之—— 代碼閱讀技巧提高編碼能力。

1. 運行代碼

是的,這是閱讀代碼的第一步。這可能不會給你過多關(guān)于項目的細節(jié),但是,你將知道如何構(gòu)建它并運行它,你將了解它使用的庫、它所依賴的開發(fā)框架等等,這是提高你對某個特定項目理解的好方法。如果你想編寫與你正在探究的特定項目類似的自己的軟件,你可能會對你應(yīng)該使用的框架或庫有一些想法。

2. 找到高層次的邏輯

當你開始閱讀一個項目的代碼時,你可能會陷入到每一個細節(jié)當中。這是有問題的,相反的,你應(yīng)該專注于高層次的結(jié)構(gòu)。要找到切入點,并從那里開始,大部分的軟件項目都有一個主要的方法,就從那里開始。此外,如果這是一個web應(yīng)用程序,請開始查看不同的包,比如業(yè)務(wù)邏輯存放在何處、UI代碼保存在哪里、控制器在何處等等。

大致來說,就是瀏覽整個項目并獲得一個基本的想法,然后問自己想專注于什么地方,就先從那個部分讀起。你可以不讀完整的代碼庫,而只是讀它可能會引起你興趣的一部分。當你找到你的切入點,你可以通過方法調(diào)用,看它引領(lǐng)你到何處,從而了解項目的業(yè)務(wù)邏輯。

3. 使用/了解工具

有很多工具可以用來閱讀和探究源代碼,有助于可視化代碼。例如,IntelliJIdea工具具有導航源代碼的功能,允許你通過單詞、單詞的一部分,甚至是單詞的縮寫來搜索。你也應(yīng)該學習鍵盤快捷鍵。用鼠標導航源代碼可能會相當枯燥和緩慢,用鍵盤快捷鍵可以更快地跳轉(zhuǎn)。你可以快速地從源代碼的一部分跳轉(zhuǎn)到另外一部分。

還有一個閱讀代碼的好軟件,叫Sourcegraph,這是由兩個斯坦福大學的畢業(yè)生創(chuàng)建的,他們是Quinn Slack 和 Beyang Liu,他們在花費時間去查看缺少文檔說明的代碼以后,決定開發(fā)一個工具來幫助他們更好地閱讀和理解代碼。

4. 了解語言/約定

深入了解某個特定語言有助于提高代碼閱讀技能。每種語言都有自己的一套約定、樣式和語法。這些知識幫助你快速地熟悉一個特定的代碼。例如,在java語言中,方法名以小寫字母開頭,而在C#語言中,方法名以一個大寫字母開頭。知道這個區(qū)別可以幫助你從源代碼中識別方法。

5. 閱讀最佳實踐/設(shè)計模式

你正在閱讀的代碼,或者它的某個結(jié)構(gòu),可能看起來很晦澀,或者你可能不熟悉它,這是很自然的。有許多良好的實踐和設(shè)計模式,人們用它來正確地和最佳地做事。例如,有一種模式稱為Singleton,它的構(gòu)造函數(shù)保持私有。你可能會問,究竟為什么有人想保持構(gòu)造函數(shù)私有呢。

我一直認為它是公有的,否則,我如何創(chuàng)建一個類的實例。嗯,這背后有一個原因。Singleton模式防止你不止一次地實例化一個類,其中有許多實際的應(yīng)用案例。如果你了解這種模式,你就不會為此而頭撞南墻了。因此,對于某些模式的了解,例如,Gang of Four(Erich Gamma, Richard Helm, Ralph Johnson,John Vlissides軟件設(shè)計領(lǐng)域的四位世界頂級大師.)有23種有文檔說明的設(shè)計模式,可以顯著地幫助你提高代碼閱讀能力。

6. 代碼審查

軟件開發(fā)是一個非常講究協(xié)作的工作。沒有人可以單獨構(gòu)建一個大型的或重要的軟件。每個軟件都是由一個團隊構(gòu)建的。在一個團隊中,每個人都貢獻自己的一份力量去塑造這個項目。在項目結(jié)束的那一天,每個人的貢獻都會合并成一份對用戶真正有價值的工作。

除了做實際的編碼以外,現(xiàn)在每一個團隊都有另外一種做法,那就是在進行觀察、建議和相互學習時,互相審查對方的代碼。這是一個構(gòu)建代碼庫知識的強有力的工具,在團隊中建立牢固的紐帶,提高代碼質(zhì)量,從而減少系統(tǒng)中的錯誤,并使客戶滿意。

做代碼檢查,你不得不閱讀團隊中其他人的代碼,最終會提高你的代碼閱讀能力。

7. 臨時重構(gòu)

臨時重構(gòu)也可以幫助您提高代碼閱讀技能。你可以找取一段長的方法代碼,然后不斷地把方法細分成多個部分。持續(xù)分解,直到你了解這一大段方法代碼背后真正的意義。之后,你可以對這些方法做些注釋,然后回滾這些更改。

這可以幫助你理解方法的架構(gòu),也可以增加你代碼重構(gòu)的知識。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容