程式碼的閱讀思維

程式語言藝術性簡談

在經過許多專案,以及閱讀過大量開源專案程式碼之後,其實會有些感想,有時候是發自內心的震撼,有時候是看到自己的渺小,有時候是對於開發者的方向感覺到惡趣味,或者一種會心一笑。

不論是一哪種,都讓程式碼閱讀變的有趣。

希望透過這邊簡介,能夠讓更多開發者願意試著去進行閱讀開源專案原始碼,或者從自己的程式碼開始進行思考 ....

本文開始

軟體是一個很有趣的地方,特別是網站應用程式,他有著與其他及其不同的部分,

  • 一部份是給予使用者,
  • 一部份是給予開發者。

而『程式語言藝術性』的部分,就是給予開發者的其中一個部分。

基本層次

程式語言藝術來說,最基本層次可以從 eslint 的基本規範來進行表示,他至少可以讓程式碼看起來輪廓有其樣貌,有其格式可言。

深入來說

另一個部分,在於程式碼的表達,透過清晰的程式碼,利用程式本身的結構以及語法特性,讓程式碼盡量以不透過註解方式,讓開發者可以進行閱讀並理解。

這邊指的閱讀,就如同閱讀文件一般的閱讀,程式碼中帶有索引,架構主體,程式邏輯,程式區塊等,讓開發者在閱讀的時候都透過閱讀的方式,瞭解開發者當時所希望表達的內容,以及程式希望呈現的部分(或功能)。

開發者意念傳達

透過每一種不同的程式架構還有程式語言特性,我們可以善用於他的特性來進行程式的編寫,表達出程式的美與簡約,例如 JS 就可以善用 callback, chain, functional programing 的方式來進行程式的優美呈現。

這個時候可能初步對於跨語言進入的開發者來說,會提高本身閱讀的門檻,但是跨過這個門檻之後,就有如從白話文學中,轉而進入到閱讀新詩一般的樂趣,當從各個不同角度來閱讀,還有揣摩當時編寫者的心境時,會有不同的樂趣可言。

閱讀瞭解到更多

現在的世界,透過許多不同種類套件管理,讓我們可以很快可以站在巨人肩膀上窺見這個世界,而我們太多時候是瞭解到『程式碼』的實用性,而很少去瞭解他的架構性,還有層次性。

其實透過閱讀不同的開源專案,會從一開始毫無頭緒,到很快的可以釐清程式的起源,到深入瞭解此語言的特性及思維,包含開源專案本身所引用的套件等等,其實都可以學習到很多事情。

而我們透過閱讀程式碼的過程中,可以更容易瞭解接下來套件庫,或者是框架本身,會進行什麼樣的修改,或者不會進行什麼樣的更動之外,更可以看出整個專案的歷史演進。

重造輪子與重用程式的抉擇

經歷過許多專案,以及協助開發的過程中,其實比較能夠體會『重造輪子』和『站在巨人肩膀』兩者之間心境。

對於開發者來說,使用別人的程式碼,有時候就像是去學習另外一套語言,甚至是比學習語言時本身的門檻更高(黑魔法包裝),造就了許多人面對不可知的時候,寧願選擇透過『重新打造』來營造自己的舒適圈。

在自己的經驗中,大部分的人都不願意接觸前人的程式碼,也不願意進行翻寫別人的程式。

實際經驗上卻是越大的系統,越需要進行改寫和調整其實越少,很多時候是需要被思考和品味其中的程式碼進程。

雖然說總體來說兩種結果所花的時間,在初期時差異並不大,一個是花時間進行編寫,一個是耗費時間再閱讀。

後記

希望透過程式碼閱讀,可以讓開發者從另外一個層面去探討『程式碼』本身,用另外一種心境去看待原本覺得很噁心,或者完全抗拒的架構。

有時候在埋頭抱怨前人所埋下的雷,以及使用到之前的彈性時,建議可以花些時間仔細品味每一段程式的『流動』,其實是可以發現到某些好的味道,以及不好的味道,這對於本身程式碼的精進,以及對於整體專案管控上會更為全面。

同時也可以透過閱讀開源的專案,混和自己的程式碼閱讀經驗,持續構思自己的程式碼表達式,相信將會有另外一個開闊的視野。

CaesarChi

Web developer, focus on website fullstack, special JavaScript, and love sharing developing experience and communicate with developers. http://about.me/clonn