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