1. 程式人生 > >程式設計師如何快速提高程式設計能力?快來看大牛的方法!

程式設計師如何快速提高程式設計能力?快來看大牛的方法!

如果你想提高編碼的能力,最容易想到的一個方法就是多敲程式碼。每個人都知道這點。然而,另外一種我認為絕對也能提高的方法:

閱讀別人的程式碼能讓你的編碼能力得到明顯的提升!

這樣說,可能很多人都抱有懷疑的態度,但是我覺得你應該相信。如果你願意嘗試,我相信你將會得到巨大的回報!

這篇文章將告訴你如何閱讀程式碼,閱讀什麼樣的程式碼最有效。如果你已經很擅長閱讀別人的程式碼了,那讀完此篇文章,你可能會發現新的方法。

應該閱讀什麼程式碼?

這是一個很重要的決定,很難給出具體的建議。我無法簡單的告訴你應該閱讀這個程式碼還是那個程式碼,只能將一些指導方針,基本的原則告訴你。

閱讀那些你用得著的程式碼

這一步最好從閱讀那些你已經在使用的外掛或者庫檔案開始。

  • 你非常喜歡的WordPress外掛

  • 你覺得很有用的Ruby gem工具包

  • 你可能還會使用到的jQuery 外掛

這些都是你可以學習的非常好的例子。你已熟悉了它們的公共API,瞭解它們內部工作原理的障礙是較低的。此外,作為程式碼的使用者,你有機會新增文件、實現新的功能,或者通常以某種方式給專案做貢獻。

閱讀那些你印象深刻的程式碼

我記得第一次看到280 Slides幻燈片網站時,我心裡想:“這太讓人印象深刻了。”我很快了解到,該網站的程式碼就是基於的Cappuccino開源專案。我把這些知識塞進了大腦的深處,當我最終遇到另一個令人印象深刻但同樣是基於Cappuccino 的應用程式時,我知道我有一個專案,我可以從中學到很多東西。你最近對什麼專案印象深刻?是開源的嗎?如果是這樣的話,這是一個很好的閱讀選擇,因為程式碼很可能會給你留下深刻的印象。

閱讀那些讓你尊敬的大師寫出來的程式碼

如果你已經用開源軟體編碼了一段時間,可能已經有其他程式設計師贏得了你的尊重。在我的腦海中我能想到一些開發人員,他們寫的程式碼簡直令人羨慕。

如果目前你腦海裡面沒有一個受人尊敬的開發者,想找到一個並不是什麼難事。他/她可能已經在前兩部分(你能用到的程式碼,或者給你印象深刻的程式碼)中授權了一些程式碼。

閱讀那些能給你帶來靈感的程式碼

如果你屬於冒險型,那麼可以考慮投身於一些大型專案,如Ruby on Rails框架,Drupal或jQuery。但是我建議暫時別接觸這樣的專案,除非你是一個有經驗的而且已經很會閱讀別人程式碼的開發者了。

大型專案有更多的活動部件,你可能最終會因為這些概念而陷入困境,無法學到任何有價值的東西。困惑會導致沮喪,而更大的專案更有可能讓你在閱讀中感到困惑和氣餒。選擇一個小專案閱讀的好處是可以一次將整個程式邏輯放在腦子裡。這樣你就可以關注細節,從而學習到很多知識。

如何閱讀?

既然你已經選擇了一些程式碼來閱讀,那麼最好的閱讀方式是什麼呢?下面提供一些方法來最大化你的投資回報率,也就是讀的少,但是收穫多。

先看大框架

假設你至少在巨集觀層面上知道你所讀的程式碼是如何實現的。如果沒有,我建議先閱讀專案的網站、教程、文件,以及除了程式碼之外你可以掌握的其他任何東西。

好了,如果上面的步驟完成了,那我建議你第一步就是先大致瀏覽一下專案的架構。這個階段的工作量根據你選擇的程式碼庫大小的不同也不一樣,但是還是需要一點時間的。

首先,注意檔案結構。這一步可以使用一些具有資料夾層次結構檢視的編輯器提供幫助,比如TextMate。例如,這裡有一個關於Twitter Ruby gem的很好的概述。

 

這一步的目標是熟悉原始碼。找出哪些檔案包含/請求/載入其他檔案,其中大部分程式碼在哪裡,如果有的話,使用的名稱空間是什麼,以及這些性質。一旦你掌握了大局,你就可以深入挖掘細節了。

記錄閱讀心得

閱讀程式碼不應該是一種被動的行為。當你開始理解程式流時,我鼓勵你在開始時添加註釋,記錄你的假設和結論。當你第一次開始的時候,你的記錄大概會是這樣的:

 

隨著你的理解進展,你可以刪除你當時留下的無關緊要的一些評論,也許還可以寫一些有意義的、權威的評論,這些評論可能會被提交給你的專案。

邊閱讀邊測試,例如Luke

希望你所選擇的專案有一個測試套件。如果沒有,您可以完全跳過這部分(或者找到一個)。

當你閱讀別人的程式碼時,測試是一個很好的起點,因為他們記錄了程式碼應該完成的任務。有些測試比其他測試更有意義,但是不管編寫得多麼好,你經常會發現程式設計師在測試中的意圖比在實現中發現的要容易得多。在閱讀時,試著讓測試套件成功執行。這將確保您的開發環境得到適當的配置,並使您在進行更改時更加自信。

親自動手做

誰說閱讀程式碼時雙手就得閒著?只有當你把所有的東西都打亂了,然後自己試著重新拼裝好時,才能在這個過程中真正理解。還記得那些通過的測試嗎?想辦法讓它們失敗,新增更多,或者嘗試更改實現的邏輯而不破壞它們。嘗試新增一個你認為很酷的小功能,或者設定專案範圍的日誌記錄,這樣就可以在程式碼的不同階段列印輸出。這還是在閱讀嗎?當然,但在這一點上,就得取決於自己的選擇了,看你是把它當作冒險來看,還是把他當作一本神祕的小說來看了。這是一件好事!

清除再重複

一旦讀完了一個程式碼庫,再選一個,然後重新開始這個過程。程式碼讀的越多,你就能從閱讀中獲取更好的資訊,你花的時間就越少。我認為你會發現投資回報增長很快,而且這是一種非常有趣的學習方式。

從哪裡入手呢?

哪裡的程式碼質量最高,我想給程式設計師帶來最大影響的就是GitHub。這個網站讓你很容易找到新的專案和優秀的程式設計師,如果你還沒有利用它,我覺得你就是在傷害自己。建議先從GitHub開始,然後直到找到一個你認為可以從中學習的專案,再轉移到其它網站閱讀。接下來可以先從git clone入手開始閱讀!