【重構】你有重構的勇氣嗎


項目發展到一定程度,因為功能的增多,就會變得越來越臃腫,原來的架構,就會不能滿足現有的需求,因為我們有很多最初規划的時候沒有想到的事情,比如說在網站或者軟件規模小的時候,我們並沒有考慮到國際化,但隨着發展,我們走出亞洲奔向世界了,這個時候我們需要全世界的人來用我們的產品,這個時候就需要重構了。

  有人會問,既然這樣,為什么我們不在軟件最初架構搭建的時候把這些東西都想進去呢?因為我們在產品的前期開發中,不會有這么多的人力財力投入進去。而且產品是慢慢進化的,不是一天想出來的,功能也會隨着增多。還有一個個重要的原因,是技術不在停的進步,比如說原來沒有OOP的概念,原來沒有Web API的概念,原來沒有AJAX的概念,所以我們可能會用一些老舊的技術。

  公司的發展也是一種重要的原因,在企業發展初期,公司往往是怎么快怎么來,前期主要是活下來,先生存再生活,一大早就想開個哈里法塔是不現實的,羅馬不是一天建成的。我記得曾經有個這樣的老板,一個小小的創業型公司,就想着要把系統打造成日訪問量500萬獨立IP的系統(他當時說的是並發500萬,呵呵,因為他不懂技術,我認為他想的是日訪問量500萬),這明顯是不現實的,因為一方面,你的團隊沒有這個能力來蓋這么高的房子,迫其而為之,而你又不懂技術,最終得到的只是欺騙。另一方面,我們退一步說,就算你真的有這樣的團隊,也沒必要把資金浪費在這種不靠邊的事上。除非你真的經過沙盤推演,有足夠的信心和錢燒,讓訪問量很快達到這個水平,不過我覺得一個創業型公司達到500萬獨立IP不是一個很容易的事情。

  很多公司基本上是這樣,在初創的時候,也沒有統一的規划,找人是怎么便宜怎么來,結果可能是找一幫實習生來干的活,造成一個項目什么語言都有,完全沒有OO的概念,比如我曾經在搜房呆過幾天,他們的代碼就是如此,Asp.Net的代碼完全寫在aspx的頁面里,一行代碼望不到頭,沒有文檔。軟通很多的項目也是如此。所以很多時候,你別看公司很大,其實他們的IT項目也不規范,因為真正規范起來的成本還是很高的,前期成本非常高。

  扯了這么多,我們該說說重構了,當項目一而再再而三地修改的時候,大家都會很煩,新手可能習慣Ctrl+V和Ctrl+C,我是最痛恨這種行為的,我本身比較懶,只要是在兩個地方或者可能會在兩個地方出現的代碼,我就會提煉出來。面對着一團亂麻的代碼,或者技術已經相當落后了的時候,我們就需要重構,重構是需要勇氣的,我們需要去說服決策者,這很不容易,因為很多時候決策者不懂技術,你忽然說要重構就意味着大筆的投入,而對於決策者來說,投入就意味着要產出,這個時候技術負責人會面臨着很大的壓力,很多技術負責人會卡在這里,停滯不前,或者是采用折中的辦法。

  我們技術負責人應該就決策者關心的事情和他談,就是投入與產出的問題,這個是決策者都最想知道的問題,如果你能清楚地告訴決策者,投入一千萬可以賺下(或者省下)五千萬,那么我想他會考慮這個事情,但技術負責人往往不擅長於談判,或者是說責任心不足。

  或者我們可以這樣,把過去一年中,在IT中的投入列出,告訴決策都有哪些是通過重構生避免的,同時把過去一年中的機會列出,告訴他如果我們重構生哪些機會可以把握住。

  然而,是所有的項目都需要重構么?項目重構都會成功么?未必!但是——我們需要有勇氣打破僵局,不破則不立,當原有的系統已經不能滿足現在的需要時,我們就打破它,建立一個新的規則。



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com