中國軟體業真的到了該反思的時候了

來源:互聯網
上載者:User

標籤:


中國五千年文化造就了我們諸多的性格,當中之中的一個就是好大喜功。這尤其反映在中國的軟體產業。

不錯。我們確實擁有數量巨大的網民,擁有無與倫比的龐大市場與使用者需求,但這並不足以讓我們的步入世界率先行列。在巨大的市場優勢面前經常讓我們有些迷離,有些飄飄然,有些盲目地民族自豪感,喊出諸如“趕英超美”的口號。然而,客觀地講,我們如今卻是差距巨大。

或許你認為我這話有些崇洋媚外,但靜下心來細緻分析我們自己設計的軟體。我們注重了軟體品質了嗎?我們在如履薄冰地進行每設計一次了嗎?我們的每個系統都在編寫高品質的代碼了嗎?或許每個項目的第一個版本號碼我們做到了。但隨著軟體生命週期的延續,與軟體需求的不斷變更。我們真的越來越難以拍著胸口說,我做到了。這就是當今中國軟體之殤:沒有高品質的軟體設計。哪來高品質的軟體系統?

所以,作為中國軟體業中的一員。你應該細緻反思了。

以下這篇文章,一個真實的故事,或許能夠給你很多的感悟:

2012年,我接到一個任務,對公司一個執行了十年之久的軟體系統開展課題研究,使其可以由現有的省集中的運營模式。改為全國集中的運營模式。

將原有的,每一個省一台server的運營模式,改為將全部業務都集中於一台server進行運營,毫無疑問。這是一個效能問題。通過增加緩衝、分散式處理、資料庫分區、讀寫分離等技術,從而解決大並發訪問與大資料量處理,問題就攻克了。

起初。我也是這樣覺得的。但我真正深入到這個軟體系統的程式碼中時卻發現。問題不是想象中那麼簡單。

儘管之前也有所耳聞,但我真正深入到代碼中時,還是感到十分的震驚。

整個項目中,一個類數百個方法。一個方法數千行代碼的地方。比比皆是。

當你遊走於數百個方法。或者數千行代碼中時。即使像我這樣工作了十多年的老手,要讀懂也是相當困難,更別說那些剛畢業的新同學。此時,我意識到,假設不改變現有的代碼結構,這個系統真的無法承載不論什麼的技術改造。

我造訪了參與這個系統多年的老員工,那些“元老”們。他們告訴我。這個系統事實上在最開初設計上還是非常不錯的。然而。經曆是十年的維護。各種功能需求。加加減減。不斷更新,版本號碼升級上百次,問題就變得越來越大。

隨著人員的流動,一些代碼變成了盲區。誰都不明確它的意思,同一時候誰都不敢去對它有不論什麼改動,除非迫不得已。每一個新員工加入。都不敢輕易改動原有不論什麼代碼,而是在原有代碼的基礎上不斷加入代碼。這樣,隨著功能的不斷變更,新添的代碼就想腫瘤一樣不斷膨脹,最後由數百行代碼擴充成數千行代碼,由數十個方法擴充成數百個方法,代碼品質不斷減少。

慢慢地。程式猿越來越看不懂代碼了,但他們又要完畢自己手頭的工作,因此開發工作變成了一種冒險。那麼公司怎麼能保證每次上線的新程式是正確的呢?那就是測試,投入巨大人力與時間的測試。因為程式越來越複雜。每次改動的測試成本都變得巨大。而這時,因為開發人員認為。測試人員總數能測出問題來,所以自己僅僅負責開發就能夠了。全部的驗證工作統統交給測試人員。毫無疑問。這個項目已經陷入了一陣難於自拔的惡性迴圈之中。維持現狀已然疲於奔命。何談不論什麼技術改造?

然而,我覺得這不是一個個案,而是一種普遍現象。大家想想。哪個軟體公司沒有運營數年的遺留系統?哪個系統不是遭遇頻繁變更?在這些系統經曆了數十次變更以後,誰還敢拍著胸脯說,我們的設計依舊非常清晰。我們的代碼依舊非常優質,恐怕不能。

“就這樣吧。好死不如賴活著!”或許大多數人都會這樣想,然而卻不包含我。我從業數十年就一直是一個救火隊員,去解救那些無法再執行下去的軟體系統。我非常少開發新的系統,總是在半途去接手一個老系統。這些系統起初代碼都十分淩亂,維護十分困難。可是在我接手之日起,事情開始變得好轉。我總是在不斷改造它們,最佳化它們的代碼。使它們慢慢變得易於閱讀、easy維護、easy變更。

慢慢地,我們的維護工作變得越來越輕鬆,我們開始喝著咖啡,聽著音樂,享受編程生活。

我採用的方法就叫“重構”。

重構不是高端大氣上檔次的華麗名詞。也不是病入膏肓才拿出來唬人的終極殺招。

它不是將原有系統改得面目全非,更不是拿著代碼一陣瞎改的魯莽之舉。

而是一種科學而穩健的持續改善。經過多年的工作實踐,我深深的感到,這樣的方法是解決中國軟體之殤的最有效方法,由於:

  1. 假如你在維護遺留系統,這個遺留系統本身的設計並不好,代碼品質存在問題,那麼你能夠採用這樣的方法,持續而穩健地改造,最後將軟體的維護納入到一個良性的迴圈中來。

  2. 假如你是一個設計者,你在設計一個新系統。但你的設計能力不足夠優秀,不知道如何適應今後的變更,那麼沒有關係,思考今天的設計。由於有了重構,我們不用操心日後的變更。這樣每一個人都能夠編寫出高品質的程式碼;

  3. 假如你是一個遺留系統的維護者,你發現原有的程式不能適應新的需求,那麼沒有關係,通過重構先改造原有系統,以適應新的需求,再加入新的需求。這樣做,你會發現你非常easy設計出高品質的代碼,使得新功能的加入不會減少原系統的品質。

當全部軟體企業都做到了這些。那麼中國軟體的品質就開始提高。中國軟體業才真正可以騰飛。

本文範鋼。系統架構師。參與過國內數十個大型軟體研發項目。

《大話重構》一書的作者。



中國軟體業真的到了該反思的時候了

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.