這裡將彙整目前已發表文章的目錄,歡迎訂閱以接收文章更新資訊。
核心觀念介紹。建立觀念基礎,閱讀時背景知識、程式撰寫經驗需求低。
日期 | 文章 |
---|---|
2022-10-10 | A0004 程式設計是有趣的堆積木遊戲 |
2022-09-01 | A0003 程式碼是寫給人看的。易讀很重要 |
2022-08-26 | A0002 見山是山,見山不是山,見山只是山 |
2022-08-21 | A0001 好的應用,來自於好的底子 |
將核心觀念延伸介紹。建立更紮實的觀念,閱讀時背景知識、程式撰寫經驗需求低。
日期 | 文章 |
---|---|
2022-10-03 | B0003 易讀程式碼的特性:精準 |
2022-09-11 | B0002 易讀程式碼的特性:直觀 |
2022-09-06 | B0001 易讀程式碼的特性:白話 |
針對觀念提供技巧範例。透過範例可以更清楚闡述觀念,但閱讀時背景知識、程式撰寫經驗需求較高。
日期 | 文章 |
---|---|
2022-09-18 | C0001 不白話的程式碼:文字加密 |
提供實用的實作技巧。通常是作者日常遇到的程式碼狀況,借題發揮;通常不會講解太多背景知識,因此對於背景知識、程式撰寫經驗需求較高。
日期 | 文章 |
---|
可能是閱讀心得、也可能是作者日常處理程式碼過程的心得分享。對背景知識、程式撰寫經驗需求不一定。
日期 | 文章 |
---|
程式設計很有樂趣 「程式設計很有樂趣」,這句話恐怕相當多人不認同。大多數人寫程式通常關心著撰寫功能、擔心著易讀與否、經歷著無盡的 Debug;這樣的經驗是辛苦的、沉重的、痛苦的,自然與樂趣是沾不上邊。那為什麼又說有樂趣呢?千萬別誤會了,這裡所說的樂趣不是指以虐待自己為樂、吃苦當吃補的那種,而是像打球、看劇、玩遊戲等等所能獲得的樂趣,是真正能享受在其中的體驗。 之所以會覺得程式設計沒樂趣,關鍵是沒接觸到有趣的觀念;如果能把這些觀念帶到程式設計的過程中,相信看待程式設計的方式一定會有所改變。 程式設計是堆積木遊戲 要解釋為什麼有樂趣之前,我們需要新的比喻來看待程式設計。這裡不再老梗地說寫文章、種田、蓋房子等比喻,畢竟印象中作家、農夫、建築師通常都是辛苦的,用於解釋樂趣稍嫌不夠準確。這個新的比喻,就是堆積木遊戲。 玩遊戲應該沒有人覺得沒樂趣吧?那為什麼是堆積木而不是其他遊戲呢?
Oct 10, 2022精簡與準確 「精準」 是另一個讓程式碼易讀的重要特性。要注意的是,這裡說的精準,指的是精簡與準確。必須兩個概念都要具備,才算得上是符合這個特性。 精簡 精簡一個容易想像的概念。假設有兩段程式碼可以完成同一件事情,其中一個用了2000行,另一個用了20行,請問哪一個比較易讀呢?在大多數的情況下,精簡的20行會比繁複的2000行來得更容易掌握、更容易理解。所以說,很多時候使用較少的程式碼可以達成易讀。這真是多麼簡單的概念! 準確 不過,只抓住精簡的原則是不夠的。當我們只考慮要用較少程式碼完成目標的時候,可能會省略了關鍵程式碼。怎麼說呢?觀察[[B0001 易讀程式碼的特性:白話]]與[[B0002 易讀程式碼的特性:直觀]]提到的例子,不難發現那些完全不白話、完全不直觀的寫法,所需要的程式碼都是比較少的,但他們都是易讀的反指標。所以不能一味地追求精簡,而是在精簡程式碼的過程中,守住一個底線,一個至少能清楚明白表達行為的底線,稱作準確。 這裡雖然用白話與直觀作為舉例,但準確並不是白話與直觀的綜合體。仔細分辨的話,白話與直觀屬於語意上的易讀特性,而準確則是邏輯行為上的易讀特性。有時候程式碼已經白話且直觀了,卻可能邏輯行為讓人難以掌握,變得很失焦,也就是不準確。
Oct 3, 2022程式碼是寫給誰看的? 「程式碼是是寫給人看的」 這件事情,在程式設計領域已經是老生常談了;正因為要給人看,所以如何讓程式碼好閱讀,就是很重要的課題。這就是所謂的易讀性(或許有些人稱作是可讀性,指的是同一件事情)。許多文獻都強調了這件事情, 這裡僅舉例列出2則經典書籍的名言供參考。 「任何傻子都能寫出電腦能懂的程式碼,而好的程式設計人員才能寫出人類能懂的程式碼」[^1] -- Martin Fowler et. al., Refactoring: Improving the Design of Existing Code, 1999. [^1]: "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." Martin Fowler et. al., Refactoring: Improving the Design of Existing Code, 1999. 「寫程式要優先給人看,然後才是電腦」[^2]
Oct 3, 2022講白話吧! 一般而言,程式碼是否易讀沒有客觀標準定義,好比人們在判斷一篇文章是平易近人還是艱澀難懂,也沒有統一的客觀方式去決定。即使如此,我們還是可以依據是否滿足某些特性來大致判斷程式碼是否相對易讀。這些特性中,「白話」 是一個很重要的指標。 下面例子可以說明白話的程式碼是什麼概念。 極度難以理解的程式碼 請先嘗試閱讀並理解下面這段程式碼。 int getLight_1() { static int a = 0;
Sep 18, 2022or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up