提升程式設計水平的靠譜方法
傑洛德·桑託 (Jerod Santo) 寫於 2016年12月19日
編者按:我原先曾在2010年5月,為“程式設計加油站”網( Fuel Your Coding )寫過這個話題。很不幸,那家網站現已關閉了,所以我重新在本網站發表這篇文章,以饗後來的讀者。我原本打算更新些許應時的內容,而今想想保持原樣也就足夠了。沒更新的那些部分也許看上去有些可笑,不過,呵呵,希望您樂在其中!
眾所周知,提高程式設計水平最顯著的方法是多寫程式碼。不過,我敢向你保證,提高程式設計水平的另一種舉措,同多寫程式碼完全相反。我將盡我所能,簡明扼要地闡述這個問題。
如果你想不斷提高程式設計技巧,你需要閱讀他人的程式碼。
在本文,我將幫你挑選應該閱讀哪些程式碼,也會給你些如何閱讀的實戰建議。如果你已經是一位程式碼閱讀者,你通過努力,能找到很多方法讓自己獲益良多。如果你還不是一位程式碼閱讀者,你絕對必須往下看。
閱讀什麼
這是個難以給出建議的大議題。我不會簡單地指出你該閱讀哪些程式碼,因為很難判斷你是歸屬哪種型別的程式設計師。但是,我會提供些指南,以便幫你挑選應該閱讀哪些程式碼。
1. 閱讀你所依賴的程式碼
一個主要的著手點是你已經使用的外掛程式和庫檔案。
-
你喜歡的一個處理 WordPress 外掛。
-
你找到的一款有用的 Ruby gem 。
-
你打算複用的一段 jQuery 外掛。
所有這些都是用來學習的好素材。因為你已經很熟悉這些程式的公開 API 介面,所以你對其內部執行機制理解起來也會比較容易。另外,作為程式碼使用者,你還可以添個技術文件,實現一些功能,或者進行某些反向工程。
2. 閱讀給你印象深刻的程式碼
記得第一次見到 280 幻燈 ( 280 Slides )網站時,我就暗自思量,“真是令人印象深刻啊。” 我很快意識到,驅動該網站的程式碼來自於開源專案卡布基諾( Cappucino )。我將這些知識深深地印入腦海。終於,當我偶遇另一個基於卡布基諾執行的應用併為止打動時,我知道我有個可以從中學到很多東西的專案了。最近讓你印象深刻的是什麼?它是開源的嗎?如果答案是肯定的,那就去讀吧,因為程式碼會和應用程式一樣給你深刻印象。
3. 閱讀你所膜拜的牛人寫的程式碼
如果你已經從事開源軟體開發有些時日了,大概會有數個程式設計師能博得你的敬佩。我認為在我之上有幾個高水平的開發者,他們寫的程式碼太令人羨慕了。假如你腦海中尚無某個值得推崇的開發者,現找一位也不是難事。他 / 她可能擁有符合先前兩種情況之一的程式碼(你所依賴的,或者給你印象深刻的)。
4. 閱讀那些你真正心領神會的程式碼
如果你是那種闖勁十足的程式設計師,你可能會考慮深入諸如 Ruby on Rails 、rupal 或者 jQuery 這類大專案。在你成為一名有經驗的程式碼閱讀者之前,我建議你避免參加這樣的專案。
大型專案有很多變動的構件,你最終可能糾纏於弄清概念而不是直接價值本身。迷茫會挫傷你的積極性,而你通常會在閱讀大型專案程式碼時感到迷茫和洩氣。挑選小型專案的好處在於,你可以立刻在腦海裡抓住整個程式的邏輯。如此這般便於你集中思想探究細節,並從中學到東西。
如何閱讀
現在你已經挑選了一些程式碼準備閱讀,那麼閱讀的最佳途徑有哪些呢?我已經閱讀過大量程式碼,所以我會提供若干最大化投資回報率的建議。
1. 眾覽全域性
我假設你至少在巨集觀層面非常瞭解你已閱讀過的程式碼。如果不是這樣,我建議你在閱讀程式碼之前,先通覽專案網站,熟讀教程、文件以及所有他人提供的資料。好,搞清楚上述問題後,我建議第一步,讓專案結構充斥你整個大腦。其工作量的多寡取決於你挑選的基礎程式碼量,不過,挑選一個以上的檔案,必會多耗費你些時間。首先,註解檔案結構。這步需要使用具有資料夾層次結構檢視的編輯器,比如 TextMate 。這裡舉個例子,推特 Ruby gem 程式概覽。本步驟的目標就是熟悉原始碼。找出哪個檔案 include/require/load 其他檔案,大量的程式碼在哪裡,用到的名稱空間是什麼,諸如此類。一旦你有了整張藍圖,即可轉到挖掘細節的工作中去。
2. 記錄你的發現
閱讀程式碼不應該是一項被動的工作。隨著你開始理解程式流程,我鼓勵你邊閱讀邊添加註釋,記錄下你的設想和總結。你最初的註釋看上去可能如下所示:
1 2 3 4 5 |
# 我認為本函式在初始化後呼叫 # 該表示式用來做什麼的? # 第17行後,該變數作用域肯定失效了 |
隨著你對程式碼的深入理解,你可以刪除那些給自己看的瑣碎淺顯的評論,進而換做有意義的、權威性的評論,興許可以回饋到專案中去。
3. 使用測試
希望你選擇的專案擁有測試套件。如果沒有,你可以略過本節(或者你另找個帶測試套件的專案)。
當你閱讀他人程式碼時,進行各種測試是個不錯的起始點。因為這些測試記錄了程式碼會完成哪些程式構想。有些測試比其他測試包含更多資訊。但不管程式碼寫得如何棒,你會常常發覺,從測試中瞭解程式設計師的意圖,比從實現中瞭解容易得多。閱讀程式碼時,你要盡力成功執行測試套件。這能保證你的開發環境配置正確,從而讓你在做某些變更時更有信心。
4. 執行,變更,執行
誰說閱讀程式碼時禁止動手的?你只有能夠將整個程式碼化整為零,而後還能拼裝回去,你才算真正開始熟悉這堆程式碼。還記得你通過的那些測試嗎?讓程式出錯,新增點東西,或者改變實現而不破壞原程式。試著加個你認為很酷的小功能,或者設定整個專案的日誌,以便在程式碼執行的不同階段得到列印輸出。這還僅僅是閱讀嗎?就這點來說,你絕對選擇了遠超懸疑小說的冒險歷程。多美妙的事情啊!
待你閱讀完成一個程式碼庫,再挑個新的,重複上述過程。你閱讀得越多,你理解得越透徹,進而你能花更少時間收穫更多成果。你會發現,這樣做的投資回報率增長相當迅速,這確實是一條快樂無比的學習之路。
從哪裡起步
我倚重的程式碼閱讀來源是 GitHub 。在該網站裡,你很容易找到新的專案和程式設計大牛,如果你不好好利用它,吃大虧的定是你自己。我建議一開始在 GitHub 上線上閱讀程式碼,直到你發現一個你認為能學到東西的專案。把你找到的小寶貝克隆到你本地再行閱讀。
怎麼樣哥們?你是否將閱讀程式碼作為一件學習工具?你會向別人推薦哪些專案?最近讀過什麼好的程式碼嗎?
LinuxStory 小編溫馨提示:更多資訊請訪問原文連結。
form: http://mp.weixin.qq.com/s?__biz=MzA5MDA3ODI2Nw==&mid=2649954473&idx=1&sn=da0b7f66d24e62388faa27cf750d3f95&chksm=881695fdbf611ceb66c6b2ff7ddda5dff7826def470b9b79772f34607ac15ff8bcf0f1602019&mpshare=1&scene=23&srcid=0228Fy69zFJ1D2oKHIGm1Uaa%23rd
相關推薦
提升程式設計水平的靠譜方法
傑洛德·桑託 (Jerod Santo) 寫於 2016年12月19日 編者按:我原先曾在2010年5月,為“程式設計加油站”網( Fuel Your Coding )寫過這個話題。很不幸,那家網站現已關閉了,所以我重新在本網站發表這篇文章,以饗後來的讀者。我原本打算
22歲女生,想要學習java程式設計,靠譜嗎
個人認為,適不適合學程式設計,更大程度上是取決於你自己對Java程式設計感不感興趣,興趣是不分性別的。如果你對Java程式設計感興趣,就適合學習,如果你對化妝感興趣,那就更適合做美妝行業,興趣才更重要。 我們可以從以下幾個點來循序漸進地剖析一下: 一、女生真的不適合學
沒有基礎半路學程式設計,靠譜嗎?
1、如果你沒有去做,是不會知道自己能不能成為大牛的。2、學習是一輩子的事情,哪裡來的半路出家?2
筆記本電腦升級Win10最靠譜的安裝激活方法
win7升級筆記本電腦升級Win10最靠譜的安裝激活方法 引言:先用激活後的WIN7SP1或WIN8.1升級WIN10專業版,升級好後WIN10就永久激活了……這是2015年微軟公司首次提出的一年期“普惠”免費升級政策。事實上,激活服務器至今一直未關閉,官方稱此項利好政策2017年12月31日終止執行。支持正
浙江京淘|正確選擇靠譜的網店代運營公司的方法
服務 淘寶 strong 運營商 不能 資源 再看 大公司 淘寶買東西 很多人都知道如何開網店,但是卻不知如何運營,自己運營的好,就可以掙錢,如果運營的不好,那麽就是虧本,所以很多朋友選擇找網店代運營公司進行托管,市面上網店代運營公司那麽多,我們該如何進行選擇呢?1、實地考
centos7 u盤安裝遇到的坑以及靠譜解決方法。
首先在官網下載centos7的iso檔案,大約4個G,然後推薦使用ultra ISO軟體來製作U盤啟動盤,主要是用ISO軟體開啟映象檔案,然後選擇製作硬碟啟動,選擇u盤,直接next就行,大約14min就OK。一個centos7的U盤啟動製作完畢。 接下來就是u盤安裝系統的過程,插入U盤,F12鍵
RecyclerView 計算滑動高度,這次比網上任何方法都靠譜
最近在做專案改版的時候,需要計算RV的滑動距離,RV的滑動距離谷歌爸爸並沒有直接回調給我們,不過網上倒是有很多方式,無外乎以下幾種。 轉載請註明出處 1.利用OnScrollListener,dy直接相加 純屬扯淡。一點都不靠譜 2.computeVer
mac securecrt無法記住密碼的解決方法 (試了一下,靠譜)
一、問題描述 mac有自帶的終端,可以執行ssl和sftp,但是目錄操作,檔案操作和檔案上傳是分開的,很不方便,並且檔案上傳命令需要檔案的全路路徑。 使用securecrt能方便的解決上述的問題,並且檔案上傳採用選擇檔案的方式。但是由於有多個伺服器需要連線和管理,
正規實體靠譜網投網站平臺的選擇方法
在網上辨別平臺不能馬虎,如果細節做不好也沒有關係,你就是要記住找到一個平臺就和客服說能不能現場視訊驗證,如果客服告訴你:什麼意思和不懂你的意思,請你說明白點等等忽視你的問題證明他們平臺不能現場視訊驗證,哪你應該知道要怎麼做。還有能現場視訊驗證也不能掉以輕心,叫客
六種方法提升營銷和文案水平的有效方法
不論撰寫文案也好,還是運營自媒體,做傳播的時候我們都需要提高自己的認知,對文案內容的一些思考和感悟,不斷的思考才能夠促使我們少走彎路。 一,站在所有讀者的角度去敘述內容,儘量把事情敘述清楚 我記得學生時代總有一個梗,老師會問全班同學這個章節的內容大家是否都
Mac安裝Python我覺得靠譜的方法
我最喜歡第三種方法,保持Python2和3,隨意切換,非常簡單 1 Mac使用HomeBrew安裝Python3.*並設為預設版本 2 Mac 下將 Python2升級到 Python3 3 【Python】Mac 升級python2.7 到
在網上區分正規實體靠譜賭博網站的選擇方法
現在大家網上現實中看到聽說玩家被黑已經屢見不鮮了,大多是被那些掛羊頭賣狗肉的野雞網黑網給騙了,因國內法律不允許,所以大家吃了虧都是忍氣吞聲,最多也是問候它親人什麼的。說實話,被黑後能全額出款的機率是很小的,幾乎不可能,我們大多也是抱著能拿回多少是多少的心態了。網站方都會以各種
以太坊最靠譜搭建私有鏈方法(翻譯setup-the-private-chain-miners)
原文:https://chainskills.com/2017/03/10/part-3-setup-the-private-chain-miners/ 第1步 - 建立datadir資料夾 執行專用區塊鏈時,強烈建議使用特
技術已經達到了一定瓶頸,程式設計師該怎樣提升自身的程式設計水平?
每個開發者都有這樣的苦惱。有時候,我們會覺得被人遺忘了。我認為,這是由於科技行業的變化太快了,如不提升自己的工作技能就會被淘汰。這時候,我們應該接受變化,而不是害怕變化。這些年來,我已學會在瓶頸期如何突破自我並且不斷提升程式設計水平。具體方法如下: 1、選擇適合專案的語言,即便是放棄自己熟悉的語言 你
依賴不同ansible版本的專案靠譜部署方法--去除依賴
自從使用ansible以來,開發項專案從測試 安裝部署,驗證速度都得到了很快的提升,特別是實現了全部自動化的測試和部署,大幅度節省了人力物力。 但是一個苦惱的問題一直困惱著. ansible 從1.9到現在的2.8.0dev,不斷的進行版本升級. 相同的程式碼在不同版本的ansible之
讀*.spa檔案,比較靠譜的方法似乎還是,直接用UltraEditor開啟二進位制檔案,找相關的位置並猜測...
首先 , filename = 'c:/Documents and Settings/User Name/My Documents/Spectral Sample.SPA' %包括路徑名的檔名 然後 , fid = fopen(filename,'r'); %二進位制格式
蒙特卡洛方法靠譜程度不高卻受追捧
……不是沒有道理的。——常規的高效的迭代方法不行的全域性優化,本質上是一撥又一撥的蒙特卡洛。 這個例子可以讓常規的數值積分方法統統歇菜。比如, 如果用matlab中的integral3,肯定不行。需要非常特殊的技巧。Mathematica預設的方法一向通用性強
網上最靠譜的3種賺錢方法
我們會發現,網路可以賺錢的專案越來越少了,比如,以前打碼,掛機,CPA都還不錯,可是現在,都賺不了多少錢了。以前開淘寶,做淘寶客,做SEO,做網站也容易賺錢,而現在,卻沒有那麼難了。很多人都迷茫了,不短簡網路做什麼可以賺錢。如果你想在網路賺錢,下面,邵連虎就跟大
最靠譜的禁止ViewPager滑動方法
最近做專案要求某種情況下ViewPager不能滑動,在網上找了一圈。有說重寫Ontouch的,各種。都試了試,基本都不可用。 自己看ViewPager原始碼,知道VIewPager移動全部都呼叫了scrollTo方法,這個是View的方法,那麼我們只需要重寫這個方法就可以禁
手機短信刪除怎麽恢復?靠譜小方法
alt process 網盤 dcb images image 耐心 https 等待 手機短信刪除怎麽恢復?我們在日常的生活中還是會使用到我們的手機短信的,就像是我們有的時候,會選擇保存一些比較有意義或者是比較重要的短信一樣,那麽我們若是不小心刪除了我們的手機短信,該如何