新聞來源: oschina 編程就像是吃飯。今晚我加班,有點餓,沒有廚房,沒有小吃。環顧四周,我只看到街角的麥當勞。于是我就面臨了一個選擇難題,我是現在去吃垃圾食品來填飽肚子呢還是再忍一忍,然后回家吃一頓健康的?在我思考這個問題的時候,我不由自主的將這個問題和代碼的質量聯系了起來。 健康的飲食是連續非離散的? 顯然吃麥當勞不是健康的飲食。但是吃麥當勞巨無霸的時候,配色拉要比配薯條健康一點。去星巴克買一個金槍魚面皮卷顯然要比任何麥當勞套餐健康。去當地的小店喝一碗熱湯顯然要比星巴克的金槍魚面皮卷健康。當然,自己在家做一頓新鮮的晚餐比上述的任何飲食都要健康。 這里有兩點: 1. 任何東西都是相對的。你總是可以做的更好或者更差。吃巨無霸不等于自殺,但是整天不吃飯就等著回家的新鮮晚餐也是不健康的。 2. 每頓飯都是獨立的。我今天吃了麥當勞并不代表我明天也要吃麥當勞。通常情況下,每一頓飯吃什么的決定都是一個獨立的判斷。 代碼如食物 和食物一樣,代碼的質量也是連續的。 簡單的來講,沒有經過測試,沒有文檔的代碼要比有測試和文檔的代碼的質量低。但是事實往往比這個復雜,就像是一灘渾水。每個人都有他們自己的標準來判斷代碼的好壞。有些人很清楚自己的編程習慣和問題,也懂得如何改進。而有些人則一直在寫著垃圾代碼,并不考慮他們的代碼是否健康。 做健康的選擇 像對待食物一樣來對待代碼。 就如你必須得吃東西一樣,你必須得提交代碼。但是你怎么吃或者怎么提交將會產生短期和長期的影響。 如果你采用麥當勞式的方法,那你就是發布了垃圾代碼,但是滿足了短期的需求。但是你會嘗到長期的惡果。你的代碼將難以維護,不會擁有健康的未來。 如果你采用自己做飯的方法,那你就必須忍受一段時間的“饑餓”。短期來看你是餓著了,但是長遠的來看,效果是正面的。 如何做決定? 編寫健康的代碼和健康的飲食有相同的要求:意識到并且堅持做。從吃垃圾食品到吃健康的食物需要首先意識到吃的東西可以改進。要執行這個改進,你需要堅持你的決定。編程也是一樣的。 不管怎樣,你的選擇必須實用。你必須得吃東西,你的代碼在將來的某個時刻必須提交。在沒有選擇的情況下,麥當勞也得吃。就如很多時候,你必須提交寫的像狗屎一樣的代碼。但是請記住,健康的編碼是連續的。在不能完全達到“健康”的狀況下,你可以改進一點點,就如吃巨無霸的時候可以配色拉,而非薯條。 世界上沒有最健康的實物。任何東西在進到你胃里之前,對你都沒有任何好處。同樣的,代碼質量是很重要,但是你不發布你的代碼的話也是一無用處。 增量改進你的代碼是不錯的選擇。每天進步一點點,而不是推翻重來 :) |