當前位置:
首頁 > 科技 > 一種肯定能提高開發者編程能力的黃金方法,即使你不寫大量的代碼

一種肯定能提高開發者編程能力的黃金方法,即使你不寫大量的代碼

作者丨Jerod Santo

翻譯丨Vincent

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

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

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

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

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

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

應該閱讀什麼代碼

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

閱讀那些你用得著的代碼

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

你非常喜歡的WordPress插件

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

你可能還會使用到的jQuery 插件

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

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

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

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

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

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

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

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

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

如何閱讀

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

先看大框架

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

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

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

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

記錄閱讀心得

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

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

邊閱讀邊測試,例如Luke

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

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

親自動手做

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

清除再重複

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

從哪裡入手呢

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

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

看Github上的開發者是如何更換編程語言的?
如何在17天之內收穫70份工作面試
人工智慧衝擊下的十大高危行業,你中了嗎?
ES8都有哪些新特性,你還在用ES6嗎?
學習DevOps的熱門原則

TAG:CSDN |

您可能感興趣

分數只能說明某一方面的能力,並不能決定你的人生
情緒穩定也是一種能力,這樣做會讓你更強大
沒有「能隨時離開的能力」,就別看不上體制內的穩定
有三種能力可以決定你的未來
孩子和夥伴在一起玩,不但能養好習慣還能提高能力
連特種兵都佩服的兵種,他們的能力不容小覷,說出來你可能不信
跑步獨處是一種能力,不是誰都能具備!
在職場中,不論面對任何問題,一定先確認有足夠能力做的積極想法
決定你的不是能力,而是格局
不卑不亢是一種能力
這樣做能有效提高孩子的社交能力
如何提高身體的自我修復能力,可以這樣訓練出來,精品閱讀
控制情緒的能力,決定了你婚姻的質量
蘋果這場一點都不硬的發布會,卻讓軟體有了硬體賺錢的能力
態度,比能力更能衡量你
大腦能力不是固定不變的,大腦終身具有神經可塑性
擁有這幾款拍照能力強勁的智能手機,您也能有成為攝影達人的可能
你的能力和心智,決定了你能走多遠
手機發展這麼迅速,拍照能力會取代相機?可能是你想多了吧!
印度大叔奇特的超能力,不僅自己不怕電,還能把電當做食物!