與重寫代碼作鬥爭

來源:互聯網
上載者:User


轉一篇很有意思的文章,老鳥應該會很有感觸。

轉自:http://www.lupaworld.com/article-226245-1.html


昨天一位年長的老闆約我一起吃午飯。我們一邊等著送吃的過來,一邊追憶著他公司初創時期的情景。他的一句話讓我感到局促不安:

  哎呀,JP,我記得那時候你看 Dan(公司的第一開發人員,首席程式員)寫的代碼,你說:“這代碼寫的可不怎麼樣,需要重寫!”

  遺憾的是,我當時沒勇氣告訴他,其實,我犯了一個錯誤。那些代碼並不需要重寫。雖然我那會兒確實認為那些代碼寫的不怎麼樣,但是經過這些年的經驗積累,我發現大多數的開發人員都會覺得別人寫的代碼不怎麼樣。甚至就連他們自己多年前寫的代碼,在現在看來,他們也覺得不怎麼樣。這些人很可能是對的,因為那些代碼(他們認為不怎麼樣的代碼),確實真的不怎麼樣。

  但是,如果鐵定要重寫代碼這種事兒,我認為那是個低級錯誤。

There were business assumptions made that you can’t possibly know now. Plenty of undocumented business assumptions that the code will handle just fine. You can’t possibly account for all of them. 有些業務

  假設你可能一直都不知道。許多未成文檔的業務假設,代碼卻又能夠恰當處理。而你沒法解釋所有業務假設。

  我喜歡Joel Spolsky 寫的《你永遠不要做的事》這篇文章中的一些話:

  我們是程式員。程式員是什嗎?在他們內心深處,認為自己是建築師。當他們初次去某地時,第一件事就是推平這塊地,然後從頭開始,建造出一些宏偉的東西來。修修補補,最佳化改良,培養花圃這些後加的整修,我們並不感到興奮。(譯註:直白的說法就是,程式員都喜歡從項目的一開始就參與進來,而並不喜歡接手別人弄了一半的項目)

  有一種更微妙的原因促成了程式員往往喜歡拋開舊代碼,從頭再來,那就是他們認為以前的代碼一團糟。於是乎就有了一個有趣的現象了:他們有可能錯了。原因是這種認為“以前的代碼一團糟”的觀點,其實是基於一個基本的編程法則:

  寫代碼往往比讀代碼要簡單的多。

  這也是為什麼代碼複用這麼難的原因。這同樣也是為什麼你團隊裡的每個人都喜歡用不同的函數去實現一個長字串分解成字串數組的功能。因為寫他們自己的函數既容易又有趣,所以他們就不願意去弄清楚以前的函數到底是怎麼實現的。

  按照此理論推論下去,你可以去問當今任何一個程式員關於他們現在正在寫的代碼。他們會告訴你,“簡直是亂成一鍋粥,沒有什麼比扔掉它們從頭再來更好的了。”

  當你雇了一個開發人員,如果他想重寫那些能正常工作的代碼,請抵抗這種行為。他或許會說Java又慢,而且已經過時了,Ruby on Rails 才是最酷的選擇。他甚至可能給你說一堆時髦的詞來勸說你。無論怎樣,請你認真考慮一下。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.