昨天,一位老上級邀請我一起吃午餐。當(dāng)坐在哪里等待上菜時,我們緬懷起早期這個公司的往事。他有一句話讓我心里一虛:

啊,你這個判官…我記得當(dāng)你看到Dan(公司的第一位程序員)寫的代碼時的樣子。你說:“這代碼寫的真爛,需要重寫!”

  我恐怕是沒有足夠的勇氣告訴他,我這“代碼需要重寫”的主張是錯誤的。不錯,我認(rèn)為這代碼寫的很亂。但是,據(jù)過去歷次的經(jīng)驗,我感覺大部分的程序員看著別人寫的程序時都會想:這代碼寫的真爛。事實上,當(dāng)一個程序員數(shù)年后再看自己寫過的程序時也會想:這代碼寫的真爛。也許他們想的是對的;這代碼確實很爛。

  但是,如果你認(rèn)為代碼需要重寫,你將犯下一個低級錯誤。

  公司里有一些想當(dāng)然的看法會讓你可能現(xiàn)在不能認(rèn)識到這點。大量的不成文的想當(dāng)然的觀點可能會讓你無法解釋清楚。

  我喜歡Joel Spolsky說的關(guān)于這種事情的話,有些事情你永遠(yuǎn)不要去做

我們是程序員。程序員,在他們自己的心里,是建筑師,當(dāng)他們來到一個地點,第一件想要做的事情就是:把這地方推平,蓋上輝煌的建筑。他們對慢慢的修繕沒有興趣:小修小補,改善,培植花草。

有一種不可捉摸的原因讓程序員們總是希望丟掉這些代碼、重新再寫。原因是他們認(rèn)為老的代碼是混亂的??墒?,你會觀察到一種非常有趣的現(xiàn)象:他們的判斷通常是錯的。他們之所以會認(rèn)為老的代碼很爛的原因來自于一個重要的、基本的編程定律:

讀代碼比寫代碼要難。

這就是為什么代碼很難重用的原因。這就是為什么每個團(tuán)隊喜歡用自己不同的函數(shù)來做把字符串拆分成數(shù)組操作的原因。他們要寫自己的方法,這更容易,更有趣,不需要弄清楚老的函數(shù)的工作原理。

根據(jù)這種定律必然得出這樣的一個結(jié)論,你現(xiàn)在可以問一問任何一個程序員,問他們對正在寫的程序感覺如何。“亂的不能再亂了,”他們會這樣告訴你?!拔覍幵赴阉鼈兌紕h了重新再寫。”

  當(dāng)你招募來了一個程序員,如果他想重寫看來工作的不錯的程序,你要抵制。他也許會說Java過時了,太慢,Ruby on Rails如何的酷。也許他會向你拋了一大堆專業(yè)名稱術(shù)語。不管他如何做,你要三思而行。

  你覺得呢?

  哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費用,即可穩(wěn)步提升排名至首頁。歡迎體驗最佳的哈爾濱網(wǎng)站建設(shè)。