那就是去讀別人寫的**。讀那些你常用的庫、程式設計框架的源**,讀那些你景仰的大牛的源**,讀**裡的測試(測試本身就是一種有效的文件);讀**、改**、執行**。
其實,所謂寫程式,大部分的時間都是花在讀**上,「寫」的部分耗時極少;所以把「讀」的技能訓練好了,是很有好處的。
如果你想大幅提高自己的程式設計能力,你需要閱讀別人的**。
不管你以前是不是這樣想的,現在你應該接受這個觀點。如果你願意嘗試一下,那麼你將會收穫頗豐。
閱讀使用的外掛程式或庫是乙個很好的開始。
乙個你真正喜歡的 wordpress 外掛程式
乙個你發現有用的 ruby gem
乙個你一直使用的 jquery 外掛程式
這些都是很好的選擇。你已經很熟悉它們的公共 api,這樣會降低對內部工作機制的理解障礙。此外,作為**的使用者,你有機會新增文件、實現新功能或以某種方式為專案貢獻**。
如果你已經使用開源軟體寫了一段時間**,你可能會有一些崇拜的程式設計師。我能想到幾個令人羨慕的**開發者。
如果你沒有乙個崇拜的開發者,你也可以很容易地找到乙個。她/他很可能寫了前面兩段提到的**(你依賴的**、令你印象深刻的**)。
如果你喜歡冒險,你可能會考慮深入理解乙個大型專案,如 ruby on rails、drupal、或者 jquery。我建議你目前避開這樣的專案,除非你是乙個有經驗的**閱讀者。
大專案包括更多模組,你可能掙扎於紛雜的概念,而沒有學到有價值的內容。困惑會使人沮喪,專案越大,越容易產生困惑,從而影響你的閱讀。閱讀小專案的好處就是你可以很快的了解整個程式的邏輯,這樣你就更容易集中精力發現和學習其中的細節。
現在你已經選擇了要讀的**,那麼閱讀**的最佳方式是什麼呢?
我已經讀過很多的**,我可以給出一些最大限度提高投資回報率的閱讀方法。
好了,從巨集觀層面了解**後,我建議你第一步先了解專案的結構。這項工作的工作量取決於你所選擇**的規模,任何多於乙個檔案的專案都需要花一點時間。
首先注意檔案結構。這一步可以使用乙個有資料夾層次結構檢視的編輯器(如 textmate),比如,這是乙個很好的twitter ruby gem 總覽。
這一步的目標是熟悉源**。找出哪些檔案包含/需要/載入其它檔案,大部分**在哪,使用的命名空間是什麼以及這類性質的內容。一旦了解了全域性,你就可以準備深入挖掘細節了。
# i think this function is called after 'initialize'希望你選擇的專案有測試套件。如果沒有,你完全可以跳過這一節(或者找乙個有的)。# 我認為這個函式在「初始化」之後呼叫
# what does this equation even do?
# 這個公式是做什麼用的?
# pretty sure this variable loses scope after line 17
# 非常確定這個變數在 17 行後失去作用域
當你閱讀別人的**時,測試是乙個很好的開始,因為它們記錄了**應該實現的功能。有些測試比其他資訊更豐富,但是不管寫的多好,你經常會發現使用測試比執行**更容易了解程式設計師的意圖。當你閱讀時,試著讓測試套件成功執行。這將確保你的開發環境配置正確,並將使你在進行更改時更加自信。
誰說讀**就不需要動手?一旦你打破一切再將它們重新整合在一起,你才開始真正明白。還記得你做過的那些測試嗎?使測試失敗,新增一些新功能,或者嘗試在不破壞的情況下改變執行。嘗試著新增一些你覺得很酷的小功能,或者設定專案範圍的日誌記錄,這樣可以在**各個階段列印輸出。這還是閱讀嗎?當然,此時更像是自己在冒險,而不是看一本偵探**。這是一件好事。
當你讀完乙個**庫,選擇另外乙個**庫重新開始這個過程。你讀的**越多、讀的越好,完成的時間就越短。我想你會發現投資回報率在飛快的增長,這實際上是一種非常愉快的學習方式。
對我閱讀**影響最大的是 github。在這個**上,我們可以很容易的找到新專案和偉大的程式設計師,如果不好好利用它那將是在為自己幫倒忙。我建議先在 github **上閱讀**直到找到自己可以借鑑的專案,然後用 git clone 複製這個專案並開始閱讀!
如何提高程式設計師人際交往能力?
有的人在日常生活中已經體會到,想關心別人都不知從何做起 想讚美別人卻不知從何開口 想協調人際關係卻越協調越複雜 想與人為善卻控制不住自己的衝動而語言生硬。人際交往能力是乙個人的知識 人品 修養以及各種心理能力的綜合,反映了乙個人的綜合素質,在培養和提高自己的人際交往能力的同時也要注意自己綜合素質的培...
程式設計師如何提高抽象能力
之前寫過一篇文章,講合格程式設計師應該具備的能力,你是合格的程式設計師嗎?合格程式設計師應該具備的12種能力。裡面提到了抽象能力,就我看來,抽象能力是軟體從業人員最應該具備的能力。因為軟體開發領域涉及到的概念太多。正如brooks所說,為了獲得概念完整性,需要我們具備很強的抽象能力,需要我們運用抽象...
如何提高程式設計師鍵盤使用效率
對於大多數程式設計師而言,鍵盤的使用時長或許比滑鼠更多,所以對於如何使用鍵盤來提高工作效率是乙個非常重要的問題,本文章通過以下幾個方面來提公升程式設計師的鍵盤使用效率 一 程式設計師常用的快捷鍵及vi指令 自從70年代起,vi一直是程式設計師最好的夥伴之一,無論你是vi新手或者是老手,下面分類給出了...