1. 程式人生 > >程式設計師看過這篇文章 讓你學會閱讀原始碼!

程式設計師看過這篇文章 讓你學會閱讀原始碼!

摘要:隨著越來越多的公司使用敏捷開發,能夠閱讀別人的程式碼比以往顯得更重要。這就需要學習一些如何提高這項技能的技巧。本文提供了幾種提高程式碼閱讀技巧的方法。

在軟體開發人員的職位描述中有閱讀原始碼。然而,這體驗並不總能令人愉悅。不是每個人都喜歡閱讀別人的程式碼,因為他們覺得那很乏味,甚至有時令人感到沮喪。有些案例中,你開始閱讀別人的程式碼,最終會產生一種痛苦的感覺,因為你不能理解這些程式碼,或者說程式碼寫得不好。大多數開發人員希望把重點放在編寫程式碼上而不是閱讀程式碼上,他們沒有意識到閱讀程式碼也是一項重要技能。

可以說,閱讀原始碼有很多的益處。閱讀程式碼的受益是巨大的。可以把編碼與文學相比較。大多數作家在他們寫作的時候注重閱讀名著。原因是你不能在真空中創造出任何東西(閉門造車)。你必須從不同的來源吸取精華, 在此基礎上去工作,才能創造出你自己的傑作。編寫程式碼亦是如此。

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

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

提高閱讀技巧有許多方法。在這篇文章中,我想提些許幾點。

1.執行程式碼——是的,這是閱讀程式碼的第一步。這可能不會給你過多關於專案的細節,但是,你將知道如何構建它並執行它,你將瞭解它使用的庫、它所依賴的開發框架等等,這是提高你對某個特定專案理解的好方法。如果你想編寫與你正在探究的特定專案類似的自己的軟體,你可能會對你應該使用的框架或庫有一些想法。

2.找到高層次的邏輯——當你開始閱讀一個專案的程式碼時,你可能會陷入到每一個細節當中。這是有問題的,相反的,你應該專注於高層次的結構。要找到切入點,並從那裡開始,大部分的軟體專案都有一個主要的方法,就從那裡開始。此外,如果這是一個web應用程式,請開始檢視不同的包,比如業務邏輯存放在何處、UI程式碼儲存在哪裡、控制器在何處等等。大致來說,就是瀏覽整個專案並獲得一個基本的想法,然後問自己想專注於什麼地方,就先從那個部分讀起。你可以不讀完整的程式碼庫,而只是讀它可能會引起你興趣的一部分。當你找到你的切入點,你可以通過方法呼叫,看它引領你到何處,從而瞭解專案的業務邏輯。

3.使用/瞭解工具——有很多工具可以用來閱讀和探究原始碼,有助於視覺化程式碼。例如,IntelliJIdea工具具有導航原始碼的功能,允許你通過單詞、單詞的一部分,甚至是單詞的縮寫來搜尋。你也應該學習鍵盤快捷鍵。用滑鼠導航原始碼可能會相當枯燥和緩慢,用鍵盤快捷鍵可以更快地跳轉。你可以快速地從原始碼的一部分跳轉到另外一部分。

還有一個閱讀程式碼的好軟體,叫Sourcegraph,這是由兩個斯坦福大學的畢業生建立的,他們是Quinn Slack 和 Beyang Liu,他們在花費時間去檢視缺少文件說明的程式碼以後,決定開發一個工具來幫助他們更好地閱讀和理解程式碼。

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

5.閱讀最佳實踐/設計模式——你正在閱讀的程式碼,或者它的某個結構,可能看起來很晦澀,或者你可能不熟悉它,這是很自然的。有許多良好的實踐和設計模式,人們用它來正確地和最佳地做事。例如,有一種模式稱為Singleton,它的建構函式保持私有。你可能會問,究竟為什麼有人想保持建構函式私有呢。我一直認為它是公有的,否則,我如何建立一個類的例項。嗯,這背後有一個原因。Singleton模式防止你不止一次地例項化一個類,其中有許多實際的應用案例。如果你瞭解這種模式,你就不會為此而頭撞南牆了。因此,對於某些模式的瞭解,例如,Gang of Four(Erich Gamma, Richard Helm, Ralph Johnson,John Vlissides軟體設計領域的四位世界頂級大師.)有23種有文件說明的設計模式,可以顯著地幫助你提高程式碼閱讀能力。

6.程式碼審查——軟體開發是一個非常講究協作的工作。沒有人可以單獨構建一個大型的或重要的軟體。每個軟體都是由一個團隊構建的。在一個團隊中,每個人都貢獻自己的一份力量去塑造這個專案。在專案結束的那一天,每個人的貢獻都會合併成一份對使用者真正有價值的工作。除了做實際的編碼以外,現在每一個團隊都有另外一種做法,那就是在進行觀察、建議和相互學習時,互相審查對方的程式碼。這是一個構建程式碼庫知識的強有力的工具,在團隊中建立牢固的紐帶,提高程式碼質量,從而減少系統中的錯誤,並使客戶滿意。

說到這裡順便給大家推薦一個Java方面的交流學習群650385180,裡面不僅可以交流,還有視訊資料免費領取,包含Spring、Mybatis原始碼以及常用設計模式講解,以及分散式、微服務、效能優化內容,相信對於已經工作和遇到技術瓶頸的朋友,在這個群裡會有你需要的內容。

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

7.臨時重構——臨時重構也可以幫助您提高程式碼閱讀技能。你可以找取一段長的方法程式碼,然後不斷地把方法細分成多個部分。持續分解,直到你瞭解這一大段方法程式碼背後真正的意義。之後,你可以對這些方法做些註釋,然後回滾這些更改。

這可以幫助你理解方法的架構,也可以增加你程式碼重構的知識。


如果你想學好JAVA這門技術,也想在IT行業拿高薪,可以參加我們的訓練營課程,選擇最適合自己的課程學習,技術大牛親授,8個月後,進入名企拿高薪。我們的課程內容有:Java工程化、高效能及分散式、高效能、深入淺出。高架構。效能調優、Spring,MyBatis,Netty原始碼分析和大資料等多個知識點。如果你想拿高薪的,想學習的,想就業前景好的,想跟別人競爭能取得優勢的,想進阿里面試但擔心面試不過的,你都可以來,q群號為:180705916 進群免費領取學習資料。