優秀程式設計師之道:深入理解你的程式碼

2015-04-07    分類:程式設計師人生2人評論發表於2015-04-07

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

為什麼有些程式設計師似乎有著一種神奇的能力,能夠在眨眼間提取程式碼的意思?

為了回答這個問題,我先從科學的角度來研究我們理解程式碼的過程。

事實證明,理解程式碼是有其心理過程的,我們可以利用這方面的知識成為一名更優秀的程式設計師。它能有助於你理解開發過程中的各個環節,這樣你就不會因為程式設計中的技術瓶頸而裹足不前。

how-to-become-a-web-developer

本文將對有關程式設計理解的知識略有涉及,並從三個方面來討論如何利用這些知識成為一名更優秀的程式設計師。

關於成為更優秀的程式設計師的方法有三種:

首先,你得知道理解程式碼的能力取決於三個方面:

  1. 知識——解決問題所需要的模組
  2. 連結——模組之間的膠水
  3. 假設——形成連結的工具

所以很顯然,提高程式設計能力需要更全面的方法途徑。

1.獲取更多的一般知識

既然理解程式碼的能力依賴於現有知識與問題之間的匹配數量,那麼由此我們可以推出,掌握的知識越多,成功的可能性越大。

作為程式設計師,我們很有必要花費大量的時間來獲取新知識。並且我們需要關注的,更多的是原理而不是技術。

考慮到這一點,讓我們來看看我們需要囊括其中的一些知識:

語言的具體知識

語言的具體知識是許多開發人員關注的重點。

瞭解語言和框架的底細。去了解API和語言結構,尋找陌生語言的不同之處,知道內部的工作原理。

通常有很多課程和資訊有助於我們掌握這方面的知識。

這類知識的問題是,不斷地會有新知識出現。新框架、語言的新版本……並且,時間越久,這方面的知識就越不值錢。

程式設計概念

這種型別的知識擁有更長的保質期。

學校教育中的電腦科學學位用了大量的時間來講述這方面的內容。在學習語言和框架的同時,也能學到概念知識。但是從語言和框架中學習概念有一個問題,那就是有時候你會很難將基本概念從它的語法表達中剝離開來。

不同的語言對某些概念的表達也有好有壞。所以瞭解幾個不同的框架和語言是有好處的。還有一種方法是先學概念,然後再去學習它是如何應用於不同的語言的。但是這種途徑的教材和資訊比較難找。程式設計概念包括諸如模式、演算法、資料結構等等。

領域知識

對行業的瞭解能為你提供一系列額外的非程式設計概念,可用於構建心理模型。

2.更善於程式碼和一般知識之間的匹配

充足的一般知識,能讓你得到更善於匹配。因為你知道如何從程式碼中尋找線索,識別線索,並迅速提取程式碼的含義。

學會識別程式碼標識

程式碼標識是一種能暗示基本概念的模式。這些模式可以跨越不同的複雜度。它們是一類能夠指引更高層次概念的程式碼片段。

例如,當你看到如下模式的程式碼:

“ Iterate over the elements in an array
Put elements into a new array based on a condition

那麼你就應該知道你正在處理過濾器。

直接將這個程式碼模組定義為“過濾器”,而不是“使用if條件從舊陣列中取一些專案放到新陣列中的迴圈”,能夠避免走彎路的時間。

在傳統的軟體開發中,“模式”參考了經典書籍《 Design Patterns: Elements of Reusable Object-Oriented Software》中的相關內容。但是,程式碼標識雖然和設計模式有關,但卻是不同的東西。

在以後的文章裡,我將羅列一些程式碼標識,並解釋如何識別它們。

學習語言規則

所謂的語言規則指的是在框架和程式語言中使用的約定和編碼風格。比如我們在Ruby和C#中的命名方式就是不一樣的。再如Rails喜歡使用MVC模式,但其他框架則不(例如Meteor.js)。

遵循語言規則編碼能讓程式碼更易於理解。即使是專業人士也是如此。

語言規則是需要日積月累的,我們可以從程式碼示例和同事身上學到這些規則。如果是新語言和框架,那就需要格外關注。

3.更善於制定和修改假設

一開始制定的假設越趨於正確,你就能越快地構建起心理模式來。

使用系統化的方法

用系統化的方法來建立心理模型包括讀取每一行的程式碼,重點構建你需要的知識。此方法的效果最好,但對於大型的程式碼庫未免有點不切實際。系統化的方法最適用於那種規模大小可控的高度關鍵程式碼。但是這樣的理想情況在現實世界中是很少見的。通常你需要處理的都是那些已經經過多年亂七八糟擴充套件的大型程式碼庫。

使用投機型的方法

至於投機型的方法——尋找感興趣的程式碼片段,對此程式碼的目的做一個假設,然後深入挖掘,看看你的假設是否正確。善於識別程式碼標識無論是在語法層面,還是在更高層次的抽象層面,都能有助於你形成更好的假設。

這方法當然沒有全面理解程式碼的效果好,但是相對的理解起來要快得多。這也很容易因為快速修復而破壞部分系統,所以要小心。

要想成為世界級的程式設計師,你需要掌握以上三個方法

我們都希望自己能成為最好的程式設計師。而在當今的技術世界裡,要想有所成就,你就得跟上不斷出現的新框架和新理論的腳步。幸運的是,這是有捷徑可循的。如果你目的明確,並且能意識到自己的缺點,那麼在相同的努力下,你可以獲得更大更快的進步。

在我看來,區分一個程式設計師是真的優秀還是流於表面的優秀,關鍵在於其對程式設計核心概念的理解。

歡迎評論。

譯文連結:http://www.codeceo.com/article/become-a-better-programmer-by-learning-code.html
英文原文:How to Become a Better Programmer by Learning How You Understand Code
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章