你的代碼活著嗎?

jopen 10年前發布 | 4K 次閱讀 程序員

什么是 legacy code? 沒有自動測試保護的就是 legacy code 。

-Michael Feathers, 《Working Effectively with Legacy Code》

講直白一點,legacy code 就是沒爹沒娘沒靠山,被人射后不理的產物。誰都可能欺負它、弄壞它,簡直就是一直像死了般卻仍在線上活著的產品代碼。沒有任何一個人喜歡跟死氣沉沉的代碼打交道。

你的代碼活著嗎?

圖片來源:史上最強哲學入門

梵我合一中的重要概念:我存在的意義取決于感知這個世界,所以我存在。

-古印度哲學家,耶耆尼伐爾克

Production code 本身的存在,其實是沒有任何意義的,那就只是骨子里 0 與 1 的組合,以一種符合規則、特殊文法限制的一種語言方式所呈現的文字罷了。而這樣的東西靜靜地攤在螢幕上,存在于某種形式的儲存體中,其實一點意義都沒有。

Production code 只有動起來,才有生命。

而它的意義取決于當它動起來時,能為誰帶來什么樣的好處,為誰解決什么樣的問題,也就是 user story 的三個關鍵點,這說明了這段 code 為什么需要存在,為何而活。

但只有這樣的解釋仍然不足以讓它真實的活著,只有動起來才是真實的活著。怎么讓它動起來呢?使用者該怎么用它呢?使用者的需求是什么呢?

最簡單的方式就是用測試程序去模擬該怎么使用它,它會怎么動起來,當它如同預期動起來時會有什么樣的改變,就能為某些人帶來價值,這才是 production 活著的意義。

測試程序的目的,在于讓 production 能活著,確定它能如同預期般的運作。

測試程序的意義,在于描述著什么樣的情況下 production code 會怎么運作,在于描述:使用者應該怎么使用 production code 。

與死氣沉沉的 legacy code 相比,另一種則是跟著測試程序共生,一直活著的 production code 。

那是種活跳跳、新鮮的程序代碼,充滿活力真實活著的程序代碼,需求喜歡找它互動,因為感覺放心可靠而總是無后顧之憂。

產品代碼、測試程序、活文件他們三兄弟總是團結一致,這才叫「活著」的產品、「活著」的程序代碼。

測試程序就是 production code 的心跳,就是 production code 活著的證明,就是 production code 的維生器,就是 production code 的使用說明書,就是使用者故事的出路,就是解決使用者需求的方式。

想找個例子比喻一下大家都不喜歡和 legacy code 打交道的感覺,我腦袋不自覺地浮出一個「無間道」的畫面。琛哥說:「你見過有人跟死尸握手的嗎?」。

你的代碼活著嗎?

你的測試程序與產品代碼,有達到梵我合一的境界嗎?

來自: www.dotblogs.com.tw

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!