一種肯定能提高開發者編程能力的方法

轉載自:http://geek.csdn.net/news/detail/214530?ref=myread

這裏寫圖片描述


原文:One Sure-Fire Way to Improve Your Coding 
作者:Jerod Santo 
翻譯:Vincent

譯者注:作爲一名開發人員,怎樣才能提高自己的開發能力?本文作者以自己的親身體驗爲例,即使不寫大量的代碼,也可以提升自己的能力,那這個方法是什麼呢?以下爲譯文。

將時間撥回到2010年5月,我最初寫這篇文章就是在這個時間,當時發佈在了Fuel Your Coding網站上面。不幸的是,這個站點現在已經不存在了,所以考慮到以後如果有人想查閱的原因,我在這裏重新發布了這篇文章。我考慮過對文章內容進行一些修改,但它對我而言已經足夠好了。

如果你想提高編碼的能力,最容易想到的一個方法就是編寫更多的代碼。每個人都知道這點。然而,另外一種我認爲絕對也能提高的方法,可以說完全是這種方法的反面。我將儘可能清楚地說明這一點:

閱讀別人的代碼能讓你的編碼能力得到明顯的提升。

這句話有人信,也有人不信。我覺得你應該相信。如果你願意嘗試一次,我覺得你得到的回報將會是巨大的。

本文我將會告訴你應該閱讀什麼樣的代碼,並且提出一些實際的建議,以幫助你怎麼樣進行閱讀。如果你已經很擅長閱讀別人的代碼了,那讀完此篇文章,你可能會發現新的方法。

應該閱讀什麼代碼

這是一個很重要的決定,也是一個很難給出建議的決定。我不能只是簡單地告訴你應該閱讀這個代碼還是那個代碼,因爲它真的歸結於你要做什麼事情。但是,我將提供一些指導方針,幫助你去選擇應該閱讀什麼內容。

閱讀那些你用得着的代碼

這一步最好從閱讀那些你已經在使用的插件或者庫文件開始。

  1. 你非常喜歡的WordPress插件
  2. 你覺得很有用的Ruby gem工具包
  3. 你可能還會使用到的jQuery 插件

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

閱讀那些你印象深刻的代碼

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

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

這裏寫圖片描述

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

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

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

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

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

如何閱讀

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

先看大框架

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

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

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

這裏寫圖片描述

這一步的目標是熟悉源代碼。找出哪些文件包含/請求/加載其他文件,其中大部分代碼在哪裏,如果有的話,使用的命名空間是什麼,以及這些性質。一旦你掌握了大局,你就可以深入挖掘細節了。

記錄閱讀心得

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

這裏寫圖片描述

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

邊閱讀邊測試,例如Luke

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

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

親自動手做

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

清除再重複

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

從哪裏入手呢

在我閱讀代碼的過程中,帶給我影響力最大的因素就是GitHub。這個網站讓你很容易找到新的項目和優秀的程序員,如果你還沒有利用它,我覺得你就是在傷害自己。我建議先從GitHub開始,然後直到找到一個你認爲可以從中學習的項目,再轉移到其它網站閱讀。接下來可以先從git clone入手開始閱讀!

發佈了13 篇原創文章 · 獲贊 32 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章