抵制程式碼重寫

edithfang發表於2015-04-09
昨天,一位老上級邀請我一起吃午餐。當坐在哪裡等待上菜時,我們緬懷起早期這個公司的往事。他有一句話讓我心裡一虛:
啊,你這個判官…我記得當你看到Dan(公司的第一位程式設計師)寫的程式碼時的樣子。你說:“這程式碼寫的真爛,需要重寫!”
我恐怕是沒有足夠的勇氣告訴他,我這“程式碼需要重寫”的主張是錯誤的。不錯,我認為這程式碼寫的很亂。但是,據過去歷次的經驗,我感覺大部分的程式設計師看著別人寫的程式時都會想:這程式碼寫的真爛。事實上,當一個程式設計師數年後再看自己寫過的程式時也會想:這程式碼寫的真爛。也許他們想的是對的;這程式碼確實很爛。

但是,如果你認為程式碼需要重寫,你將犯下一個低階錯誤。

公司裡有一些想當然的看法會讓你可能現在不能認識到這點。大量的不成文的想當然的觀點可能會讓你無法解釋清楚。

我喜歡Joel Spolsky說的關於這種事情的話,有些事情你永遠不要去做

我們是程式設計師。程式設計師,在他們自己的心裡,是建築師,當他們來到一個地點,第一件想要做的事情就是:把這地方推平,蓋上輝煌的建築。他們對慢慢的修繕沒有興趣:小修小補,改善,培植花草。
有一種不可捉摸的原因讓程式設計師們總是希望丟掉這些程式碼、重新再寫。原因是他們認為老的程式碼是混亂的。可是,你會觀察到一種非常有趣的現象:他們的判斷通常是錯的。他們之所以會認為老的程式碼很爛的原因來自於一個重要的、基本的程式設計定律:
讀程式碼比寫程式碼要難。
這就是為什麼程式碼很難重用的原因。這就是為什麼每個團隊喜歡用自己不同的函式來做把字串拆分成陣列操作的原因。他們要寫自己的方法,這更容易,更有趣,不需要弄清楚老的函式的工作原理。
根據這種定律必然得出這樣的一個結論,你現在可以問一問任何一個程式設計師,問他們對正在寫的程式感覺如何。“亂的不能再亂了,”他們會這樣告訴你。“我寧願把它們都刪了重新再寫。”


當你招募來了一個程式設計師,如果他想重寫看來工作的不錯的程式,你要抵制。他也許會說Java過時了,太慢,Ruby on Rails如何的酷。也許他會向你拋了一大堆專業名稱術語。不管他如何做,你要三思而行。

你覺得呢?
相關閱讀
評論(1)

相關文章