摘要:隨着愈來愈多的公司使用敏捷開發,可以閱讀別人的代碼比以往顯得更重要。這就須要學習一些如何提升這項技能的技巧。本文提供了幾種提升代碼閱讀技巧的方法。java
在軟件開發人員的職位描述中有閱讀源代碼。然而,這體驗並不總能使人愉悅。不是每一個人都喜歡閱讀別人的代碼,由於他們以爲那很乏味,甚至有時使人感到沮喪。有些案例中,你開始閱讀別人的代碼,最終會產生一種痛苦的感受,由於你不能理解這些代碼,或者說代碼寫得很差。大多數開發人員但願把重點放在編寫代碼上而不是閱讀代碼上,他們沒有意識到閱讀代碼也是一項重要技能。web
能夠說,閱讀源代碼有不少的益處。閱讀代碼的受益是巨大的。能夠把編碼與文學相比較。大多數做家在他們寫做的時候注重閱讀名著。緣由是你不能在真空中創造出任何東西(閉門造車)。你必須從不一樣的來源吸收精華, 在此基礎上去工做,才能創造出你本身的傑做。編寫代碼亦是如此。面試
要想能寫出好的代碼,你必須讀不少好的代碼。經過這種方式,你能夠了解其餘開發人員是如何思考的,以及如何解決特定的問題的,還能夠發現他們的不足之處。你能夠從閱讀別人的代碼中獲取不一樣的想法、風格和模式,讓你的知識逐漸增加。設計模式
一言以蔽之——代碼閱讀技巧提升編碼能力。性能優化
提升閱讀技巧有許多方法。在這篇文章中,我想提些許幾點。架構
1.運行代碼——是的,這是閱讀代碼的第一步。這可能不會給你過多關於項目的細節,可是,你將知道如何構建它並運行它,你將瞭解它使用的庫、它所依賴的開發框架等等,這是提升你對某個特定項目理解的好方法。若是你想編寫與你正在探究的特定項目相似的本身的軟件,你可能會對你應該使用的框架或庫有一些想法。框架
2.找到高層次的邏輯——當你開始閱讀一個項目的代碼時,你可能會陷入到每個細節當中。這是有問題的,相反的,你應該專一於高層次的結構。要找到切入點,並從那裏開始,大部分的軟件項目都有一個主要的方法,就從那裏開始。此外,若是這是一個web應用程序,請開始查看不一樣的包,好比業務邏輯存放在何處、UI代碼保存在哪裏、控制器在何處等等。大體來講,就是瀏覽整個項目並得到一個基本的想法,而後問本身想專一於什麼地方,就先從那個部分讀起。你能夠不讀完整的代碼庫,而只是讀它可能會引發你興趣的一部分。當你找到你的切入點,你能夠經過方法調用,看它引領你到何處,從而瞭解項目的業務邏輯。分佈式
3.使用/瞭解工具——有不少工具能夠用來閱讀和探究源代碼,有助於可視化代碼。例如,IntelliJIdea工具具備導航源代碼的功能,容許你經過單詞、單詞的一部分,甚至是單詞的縮寫來搜索。你也應該學習鍵盤快捷鍵。用鼠標導航源代碼可能會至關枯燥和緩慢,用鍵盤快捷鍵能夠更快地跳轉。你能夠快速地從源代碼的一部分跳轉到另一部分。ide
還有一個閱讀代碼的好軟件,叫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 進羣免費領取學習資料。