一天深夜,我餓了,但是我剛下班還沒到家,所以對放在家裡廚房裡的小點心我只能望洋興嘆,就想著先墊墊肚子,但是到街上一看,發現只有街對面的麥當勞。
然後我陷入了思考:我是吃這些垃圾食品先“橫掃飢餓、滿足自己”呢?然後餓著肚子經過一段“長途跋涉”回到我溫馨舒適的家裡,來頓健康美味的飲食?
當我在思索時,我忽然想到這個問題和我們關注的程式碼質量何其相象?當然民以食為天,食物來的可能更為重要。
先說說我吧,我深深的明白麥當勞餐廳是絕對提供不了我健康的膳食的。作為一個吃貨或者說比較注重飲食的人,對於這種沒有營養的快餐食品我是絕對嗤之以鼻的。但是不可否認的是,我們中很多人,包括我,是吃著麥當勞長大的,根本就不會去想這種食品是否於健康有害:餓了,有麥當勞,哈哈,那再好也沒有了。
但是現在,我非常清楚吃這種垃圾食品對我的身體是不好的,不論是長期還是短期的,我都不想深受其害。並且絕大多數快餐食品都是如此。我經過了很長一段時間的心理建設過程,才終於下定決心要改變我的飲食習慣,這並非一朝一夕就可以達成,需要日積月累不斷提醒自己要健康飲食。
後面馬上會對程式設計進行詳解,大家不要心急,這是鋪墊哈
健康飲食的習慣是一個持續性過程。
誠然,選擇麥當勞絕對是有悖於健康飲食這個觀念的,而不同的食物其有悖程度也不盡相同。比方說,吃漢堡與沙拉勉強比吃巨無霸搭配薯條健康,在星巴克吃吐納魚卷比吃漢堡又稍微好點,但是吐納魚卷又比不上餐館中點的煲湯,當然用新鮮食材自己烹飪的美味佳餚,卻又遠遠比上述充飢之物更健康。
在這件事上面我得到了以下兩個啟發:
事物是運動發展的,不是一成不變的。沒有最好只有更好,同理,沒有最壞只有更壞。偶爾吃一個漢堡沒什麼大不了,不會說嚴重到要致人死亡,但是它裡面的營養顯然比不上自己烹飪的美味佳餚,日積月累,那就不可了。
每一個決定都是新的開始。一旦你不斷擺事實講道理說服自己吃下第一個漢堡,那麼接下來你就有藉口了“我昨天吃了一個漢堡,感覺沒怎麼不好,那我今天再吃一個吧”。凡事開了一個頭之後,猶如開啟了潘多拉的盒子,後面就難以控制了。老實說,上面那個看似合情合理的理由雖然不合邏輯,但是說服自己還是挺管用的。不錯,吃什麼這個決定每次都應該是個新的開始。即使你早餐是漢堡,但是絕對不影響你午飯吃自己做的可口飯菜。
程式碼就像食物
與飲食習慣非常相像,程式碼質量也是一個持續性過程。
簡單而言,就是一個沒有測試和文件就釋出的程式包要比有測試和文件的相同程式包質量要差。
但是可別忽略了很多不確定的因素。正如不是每個人都在乎健康飲食,程式設計師對高質量的程式碼的想法也會有所差異。有的人對自己的程式設計習慣瞭如指掌,並且致力於不斷提高改善。也有的人寫了那麼多年的程式碼,卻從來沒有好好反思過自己的程式碼質量如何。
做出明智的抉擇
我們可以把程式碼比喻成食物。
就像每個人都必須吃飯一樣,我們程式設計師最終也不得不釋出程式。那麼我們又該怎麼做,才能避免那些不利的影響呢,無論短期還是長期?
如果你像抗拒不了麥當勞的誘惑一樣,釋出了質量差勁的程式,雖然在短時間內填補了你的肚子——看上去好像完成了任務,但是絕對會在以後的時間裡深受其害。想要在這些質量不高的程式碼上進行維護會讓你覺得無從下手,還需要更多的精力。從長遠角度看,低質量的程式碼就像垃圾食品一樣,對我們的健康生活絕對有害無益。
不過如果你堅持餓著肚子回到家吃自己做的可口飯菜,雖然短期內不能滿足你的胃,但是從長遠角度看,這個影響絕對是積極的。同樣的,我們寫出來的程式碼也將更易於維護,出現的bug也容易解決,甚至要變更需要的話修改也更加便捷。由此可見,這種方式下發布的程式碼使用週期更為持久。
決定
寫程式碼和保持健康飲食一樣需要這兩個關鍵點:認識和執行。想要從不良的飲食習慣改變過來首先需要認識到哪些得改,然後立刻採取行動,堅決執行所下的決定。
而想要改善我們的程式設計習慣同樣也是如此:認識到自身的不足,然後堅決執行,絕不後退。
但是有一點必須宣告,我們下的決定必須符合實際。因為我們必須要吃東西,而軟體也總有釋出的那一天,所以當我們確實無法吃上健康的飯菜時,那麼麥當勞就是別無選擇的選擇,同樣的,因為有時候專案會有各種限制和要求的,那麼到了不得不釋出的時候你不釋出也不行,即使寫的很爛。只要記得高質量的程式碼是一個不斷累積的持續性過程,是不可能一蹴而就的。就像我們吃東西,要是一下子戒不掉漢堡,可以試著用沙拉搭配漢堡吃,而不是薯條。
世上沒有所謂“最健康”的食物。你可以花上一整天時間去準備你能想到的最棒的佳餚,但是如果你沒有吃,那麼對你而言,這些美味佳餚就毫無意義。同樣的,程式碼的質量也很重要,如果你不需要釋出,那麼關卿何事呢!
想提高程式碼質量最可靠的方法是一點一點改進,一天一天進步。不要想著一步登天,一下子就能用好習慣取代壞習慣。
英文原文:The Hungry Programmer
翻譯作者:IT新聞 – 蔣麗麗
相關閱讀
評論(0)