說起精致,最容易想起的詞大概是瓷器了,但這個詞用到程序員身上,肯定讓很多人覺得摸不著頭腦,在詳述"精致"這個詞以前,還是先來看一個"破窗理論",讓我們真正的理解"精致"的概念。
最早的"破窗理論",也稱"破窗謬論",源自于一位經濟學家黑茲利特(也有人說源于法國19世紀經濟學家巴斯夏),用來指出"破壞創造財富"的概念,以徹底地否定凱恩斯主義的政府干預政策。但后來美國斯坦福大學心理學家詹巴斗和犯罪學家凱琳也提出了相應的"破窗理論"。
心理學家詹巴斗進行了一項試驗,他把兩輛一模一樣的汽車分別停放在帕羅阿爾托的中產階級社區和相對雜亂的布朗克斯街區。對停在布朗克斯街區的那一輛,他摘掉了車牌,并且把頂棚打開,結果不到一天就被人偷走了;而停放在帕羅阿爾托的那一輛,停了一個星期也無人問津。后來,詹巴斗用錘子把這輛車的玻璃敲了個大洞,結果僅僅過了幾個小時車就不見了。
而犯罪學家凱琳曾注意到一個問題:在她上班的路旁,有一座非常漂亮的大樓,有一天,她注意到樓上有一窗子的玻璃被打破了,那扇破窗與整座大樓的整潔美麗極不調諧,顯得格外的刺眼。又過了一段時間,她驚奇地發現:那扇破窗不但沒得到及時的維修,反而又增加了幾個帶爛玻璃的窗子……這一發現使她的心中忽有所悟:如果有人打壞了一個建筑物的窗戶玻璃,而這扇窗戶又得不到及時維修的話,別人就可能受到某些暗示性的縱容去打爛更多的玻璃。久而久之,這些破窗戶就給人造成一種無序的感覺;其結果是:在這種麻木不仁的氛圍中,犯罪就會滋生。這就是凱琳著名的"破窗理論"。
后來的"破窗理論",已經突破原有經濟學上的概念,有了新的意義:殘缺不全的東西更容易遭受到別人的破壞。前面的汽車和窗戶都表明了這一點。
其實作為程序員開發軟件也是一樣,可能有十種好的方法去寫一個功能,一個類,但同時可能會有一百種更快捷但不好的方法去做同樣的事情,很多程序員會因為各種原因,如時間壓力,工作強度,技術水平等一系列問題選擇了后者而非前者。同樣的事情還發生在維護和修改階段,當看到別人的代碼寫的隨意,不好時,那么自然就會沿著別人的方向走下去,結果就是產生出更多不好的代碼,這是在代碼開發中的一個典型"破窗理論"的體現。
承認一點,現實世界是不完美,特別是開發中,因為時間,精力,能力等各種因素,我們始終是要打破一些窗戶,但是卻要記住兩點:
1.一個月前多打破了一扇窗戶,結果一個月就會打破10 扇甚至更多的窗戶。
2.如果打破了一扇窗戶,就要記住,遲早應該將它補上。
因為各方面的原因,一個程序員也許不能做到精致的代碼,但是如果一個程序員不想去做精致的代碼,那么又何必選擇軟件開發呢?