1、閱讀代碼能讓你變得更優秀編程
在編程生涯的早期就明白閱讀的代碼越多,代碼就能變得更好。當我不得不維護其餘人的代碼時,簡單和乾淨的代碼幾乎老是比花哨或複雜的代碼好—— 即便有註釋。然而另外一方面,當我花足夠的時間去理解複雜代碼的時候,我經常可以學到新的技巧。不論怎麼樣,都能讓我有所提升。編程語言
這使得我在那些沒有代碼審查的地方一再爭取。而當沒有足夠的時間來正式執行「代碼審查」的時候,我會本身瀏覽存儲庫和閱讀代碼。ide
2、超越語法工具
在你不得不全力對付任意編程語言的語法時,也就是學習如何充分利用該語言最瑣碎的時刻。一門語言的語法每每是很是靜態的,而且若是你出錯了,你的編譯器會向你控訴。更深層次的課程涉及到什麼語言最適合解決什麼樣的問題(「合適的工具作合適的工做」),以及如何用那種語言編寫代碼以便於使它高效和可維護。學習
學習新語言有許多方法:課程,教程,導師,書籍以及等等。我一般會結合這些選項來學習一門新的語言。當涉及到非語法元素的時候,這些方法經常很是類似。測試
閱讀來自於其餘人的實際部署代碼會讓你收穫更多。不只僅是常規的結構化學習,你還須要學習模式和實踐方法。語言中所謂「正確」的作事方式並不老是效果最佳的方式。你會經歷邊緣狀況,一次性事務以及意想不到的集成。你也會找到這些問題的解決方案,有好有壞,但若是你認真思考的話,那麼這正是出來「推薦作法」的地方。網站
3、開源無處不在開放源代碼
隨着開源運動的發展,可供閱讀和學習的代碼數量也大幅度增加。例如Gitlab,GitHub和到BitBucket這些網站就容許咱們獲取全功能的應用程序,不只能夠閱讀代碼,還能夠擺弄。不多有我想要學習的東西是不能在開源代碼中獲取的。教程
我之前學習新的編程語言,會把重點放在諸如目錄結構和命名約定這些簡單的事情上。可是,如今,我會找一些不一樣的開源項目,而後能夠開始拼湊經常使用的方法。我不多強調之前那些類型的東西了。事務
可用的代碼是如此之多,但質量卻參差不齊。當咱們想要學習的時候,經常搞不清楚哪一個好哪一個很差。那就保持閱讀代碼吧,慢慢地你會學會如何區分。閱讀「壞」的代碼能夠幫助你理解爲何它是「壞」的。關鍵是不要懼怕嘗試任何你以爲看上去正確的東西,而且當你走錯路的時候可以認可錯誤,並改正問題,而後繼續前行。
4、壞的代碼就壞的,是這樣的嗎?
有人會說「壞的代碼比好的代碼要更多更明顯」。
當我看到我之前寫的代碼時,個人第一想法就是我怎麼會寫這樣的垃圾代碼。這實際上意味着我還在學習中。若是我看到我之前的代碼,以爲它看上去很是的好,那麼說明我並無提升。
那麼,咱們怎麼才能從壞的代碼中學到東西呢?
5、你閱讀的壞代碼越多,那麼你就越擅長髮現壞的代碼
當你在學習和搜索例子的時候,你會發現和使用大量不能工做的代碼。請記住,僅僅由於它不適合你的狀況,並不能說明它就是壞的代碼。學習如何讓它工做可以使得你變得更優秀。
6、你怎麼知道它是壞的代碼?
人們喜歡批評。閱讀評論,若是你看到不少「WTF(什麼玩意)」,那麼可能你看到的正是壞的代碼,試着指出爲何很差的緣由。不要只留下「這代碼真爛」這樣的評論。不要裝得你好像懂得壞代碼的全部需求,要知道,總有一個它之因此被這樣寫的正當理由。若是你知道它爲何是壞代碼的緣由,那麼不妨留下一個有建設性的評論。
7、讓它變成好的代碼
放一個能讓代碼變得更好的pull請求。修正語法,使用更好的方法,添加註釋或修改縮進:這些都是改進代碼的偉大方式。加一個爲何你推薦改變代碼的解釋。
我發現當我幫助別人學習的時候能學到更多。若是我認爲我理解了一個新的主題,那麼我會找我的來試着向他解釋,這能讓我更深入地理解和記住它,而且讓我快速發現我是否寫了壞的代碼。
8、回報
記住開放源代碼在你參與進去的時候效果最佳。代碼更改在大多數項目中都是受歡迎的,可是有不少出力的方法。
測試開源代碼和文件錯誤報告;幫助完成文檔集;寫教程和如何作的例子;參加對話——或者僅僅只是幫助傳播。每一件事都能帶來改變,而且越多的人蔘與進來越好!