飢腸轆轆的程式設計師

veldts發表於2012-03-22

原文:The Hungry Programmer

程式設計和進餐實在神似。

晚上,我飢腸轆轆,不在家,沒法下廚犒勞自己。我環顧四周,徒見街對面有家麥當勞。

於是,我又一次進退兩難,每次離家外出時間一長,就會面臨這種困境:我該馬上吃垃圾快餐填飽肚子?還是再挨會兒餓,回家吃一頓健康的?

面對這種困境,仔細一想,我不禁注意到它跟程式碼質量的關係有多緊密。不過,下面還是先繼續聊聊食物。

別人怎麼想我不知道,我只能代表自己講話,我並不認為麥當勞能為自己提供健康膳食。作為一個忠實的生食主義者,或者說關心自己吃什麼的人,麥當勞的食物和我眼裡的健康膳食相去甚遠。不過,我是吃著麥當勞快餐長大的,很長一段時間都沒想過它是否健康,相信許多讀者也一樣。我肚子餓了,而麥當勞就有吃的。

既然明白了麥當勞快餐對自己身體的短期和長期影響,我就會盡全力避開它。對一般的熟食也是如此。我為此熬了相當長一段時間。決定改變自己的飲食習慣並非一日之功,健康飲食是連續體(continuum)

很快就會談到程式設計了。:)

健康飲食是連續體?

麥當勞快餐不是健康膳食。但是,巨無霸加配菜沙拉總比巨無霸加薯條來得健康。星巴克金槍魚卷要比巨無霸之類的食物更加健康。去本地精品咖啡館喝碗湯則要比星巴克的金槍魚卷更健康。在家用新鮮食材做的膳食則要比前面這些食物都更健康。

通過觀察食物,我們可以提煉出下面兩點:

  1. 一切都是相對的。你總是可以做得更好,也可以做得更糟。吃個巨無霸死不了人,但為了回家吃一頓而一整天不吃東西顯然也不健康。
  2. 每一餐都是全新的。人們很容易誤入陷阱:既然我昨天吃了巨無霸,今天再吃一個也無所謂。這種想法不合邏輯,也毫無益處。每次用餐都是新的抉擇。即使你早飯吃了巨無霸,午飯自己做吃的也是邁向連續體的一小步。

程式碼如食物

程式碼就像食物,也是連續體。

基本上,我們可以斷定,相比有測試和文件的程式庫,未經測試和沒有文件就釋出的同一個庫質量要差。

然而,許多事情並不是那麼黑白分明的。何為“健康”程式碼,仁者見仁,智者見智。有些人非常注意自己的程式設計習慣,不斷加以改進。有些人卻經年累月地編寫同樣的垃圾程式碼,至於那些程式碼“健康”與否,則不聞不問。

健康的選擇

視程式碼如食物。

就像人總得吃東西,程式碼也必須釋出。但是,具體怎麼做會有短期和長期影響。

如果採取麥當勞做法,釋出垃圾,那也只是滿足了短期需求。但你將切身體會到長期影響。你的程式碼維護起來將會更難,後續也需要更多精力。它不會健康長久。

如果採取自制膳食的做法,需求可能暫時得不到滿足。短期影響是你會餓肚子,不過這麼做很值得:長期影響將是正面積極的。你的程式碼將更易維護,缺陷更易修正,也更容易進行變更。你的程式碼會健康而長久。

決定

編寫健康程式碼跟健康飲食的要求一樣:識別不足和全力以赴。從吃得不健康到吃得健康得先識別出不足之處。改進不足則要求全力以赴執行決定。

要改進程式設計習慣也一樣:識別有待改進的地方,然後全力以赴加以改進。

一如既往,你的選擇必須務實。人總要吃東西,程式碼總得釋出。找到健康膳食替代之前,還得吃一陣麥當勞。我不清楚你的軟體專案有什麼限制,有時候,就算是垃圾也要釋出。只不過要記住健康程式設計是連續體。吃巨無霸時搭配沙拉,而不是薯條。

世上沒有“最健康”的膳食。你可以一整天都用來準備你所能想象的最健康的膳食,但它要是不進你的肚子,你便得不到什麼好處。程式碼質量很重要,但倘若不釋出,它就什麼也不是。

要編寫更健康的程式碼,最靠譜的做法是持續不斷的改進。每一天程式設計都更加健康一點,別想著一下子摒棄舊習慣,希冀它們馬上為新的健康習慣所替代。

相關文章