国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

代碼重構(gòu)的那些坑和實(shí)戰(zhàn)經(jīng)驗(yàn)

開(kāi)發(fā) 前端
老舊代碼很糟糕,很難維護(hù);“單一整體式的java架構(gòu)”對(duì)我們的未來(lái)發(fā)展不利,無(wú)法支持有6千萬(wàn)移動(dòng)用戶以及多站點(diǎn)部署的大型運(yùn)行商;我想要嘗試炫酷的新技術(shù),比如Apache Cassandra、虛擬化技術(shù)、二進(jìn)制協(xié)議、SOA等等。本文為就來(lái)為您介紹下代碼重構(gòu)的那些坑和實(shí)戰(zhàn)經(jīng)驗(yàn)。

2016年冬,我在一家創(chuàng)業(yè)公司的小團(tuán)隊(duì)里搞軟件開(kāi)發(fā)。彼時(shí)我們有一位真實(shí)的企業(yè)客戶,且軟件的第一版也已發(fā)布。開(kāi)發(fā)按進(jìn)度完工,在發(fā)布時(shí)我欣喜若狂,也非常驕傲,看著系統(tǒng)服務(wù)于每天幾百萬(wàn)的獨(dú)立用戶,并發(fā)送出數(shù)千萬(wàn)條短信真是太令人滿意了。到了第二年夏天,公司拿到了真實(shí)收入,我的職位變成了開(kāi)發(fā)主管,公司又招了些新人,正待蓬勃發(fā)展,一切都很美好。然后我們做了一個(gè)巨大的決策失誤:決定重寫軟件——從頭開(kāi)始。

[[208467]]

為什么我們覺(jué)得有必要從頭重寫軟件呢?

在第一次編寫系統(tǒng)代碼時(shí),我們的時(shí)間表十分緊迫,必須與時(shí)間賽跑,在計(jì)劃時(shí)間內(nèi)趕完進(jìn)度。因此無(wú)論是設(shè)計(jì)討論,還是審查會(huì)議都沒(méi)花太長(zhǎng)時(shí)間——我們沒(méi)有時(shí)間浪費(fèi)在這上面——只能匆匆完成一個(gè)功能、快速測(cè)試,然后趕著去做下一個(gè)。我們與別的公司共享辦公空間,我還記得其他公司的軟件開(kāi)發(fā)都會(huì)花很長(zhǎng)時(shí)間做設(shè)計(jì)、討論架構(gòu),再花上數(shù)周討論設(shè)計(jì)模型。

除了設(shè)計(jì)倉(cāng)促,原本的系統(tǒng)寫得不差,總體來(lái)說(shuō)架構(gòu)也不錯(cuò)。其中有些意大利面條式的代碼,是公司之前做概念驗(yàn)證時(shí)留下的,因?yàn)檫@些代碼能用,再加上工期緊張,當(dāng)時(shí)我們沒(méi)有去碰。但后來(lái)我們不考慮執(zhí)行優(yōu)化改進(jìn),卻決定要從頭重寫代碼的原因在于:

  • 老舊代碼很糟糕,很難維護(hù);“單一整體式的java架構(gòu)”對(duì)我們的未來(lái)發(fā)展不利,無(wú)法支持有6千萬(wàn)移動(dòng)用戶以及多站點(diǎn)部署的大型運(yùn)行商;我想要嘗試炫酷的新技術(shù),比如Apache Cassandra、虛擬化技術(shù)、二進(jìn)制協(xié)議、SOA等等。

結(jié)果很不幸:我們說(shuō)服了全公司以及董事會(huì),實(shí)現(xiàn)了愿望。

代碼重寫之旅

正式的開(kāi)發(fā)時(shí)間是從2016年春天開(kāi)始的,我們將2017年1月末設(shè)定為發(fā)布時(shí)間。由于計(jì)劃太過(guò)龐大,我們需要更多的人,于是在印度聘請(qǐng)了顧問(wèn)與幾個(gè)遠(yuǎn)程開(kāi)發(fā)者。但是,我們沒(méi)有充分預(yù)期到維護(hù)原本系統(tǒng)、進(jìn)行新的開(kāi)發(fā)工作與理解客戶需求這些并行起來(lái)的工作量。

還記得我在文章最開(kāi)始說(shuō)過(guò),我們有一個(gè)真實(shí)客戶么?這位客戶是南美最大的移動(dòng)運(yùn)營(yíng)商之一。在我們開(kāi)發(fā)的系統(tǒng)投入使用后,他們開(kāi)始對(duì)變更和新功能提出要求,因此我們只能繼續(xù)更新原來(lái)的系統(tǒng)。但是,由于這個(gè)系統(tǒng)將會(huì)被廢棄,在更新時(shí)我們總有些敷衍了事,盡可能找借口拒絕了客戶許多的新功能需求。結(jié)果導(dǎo)致了工期拖延,沒(méi)能在原定的deadline完成進(jìn)度。事實(shí)上,我們的進(jìn)度拖延了整整8個(gè)月。

不過(guò)我們還是先說(shuō)說(shuō)結(jié)果吧:當(dāng)項(xiàng)目終于完工時(shí),新系統(tǒng)看起來(lái)非常棒,滿足所有需求。我們做了負(fù)載測(cè)試,結(jié)果顯示新系統(tǒng)能很容易地支持超過(guò)1億的用戶,配置集中,查看圖表的UI工具也很美觀,是時(shí)候廢棄舊系統(tǒng),改換新系統(tǒng)了……

但是客戶拒絕了升級(jí)的請(qǐng)求:原本的系統(tǒng)已經(jīng)獲得了廣泛應(yīng)用,他們的用戶已經(jīng)開(kāi)始依賴舊系統(tǒng)了,他們完全不想冒風(fēng)險(xiǎn)。長(zhǎng)話短說(shuō),浪費(fèi)了幾個(gè)月之后我們收效甚微。該項(xiàng)目正式宣告失敗。

何時(shí)需要重寫代碼

Joel Spolsky強(qiáng)烈反對(duì)重寫代碼,他建議大家都不要這樣做。不過(guò)我不是特別認(rèn)同:有時(shí)候逐步優(yōu)化與重構(gòu)非常困難,唯一讀懂代碼的方式就是重寫。此外軟件開(kāi)發(fā)人員喜歡編寫代碼,創(chuàng)造新東西——閱讀別人寫的代碼,嘗試?yán)斫馑麄兊拇a與“思維抽象”會(huì)很無(wú)聊。不過(guò),優(yōu)秀的程序員也是優(yōu)秀的維護(hù)者。

如果你想要重寫代碼,一定要出于正確的理由,并有著合適的計(jì)劃。比如:

有時(shí)候在發(fā)布新版很久之后,老舊代碼仍需維護(hù),維護(hù)兩個(gè)版本的代碼需要耗費(fèi)大量工作,在開(kāi)始重寫前請(qǐng)根據(jù)項(xiàng)目規(guī)模評(píng)估所需的時(shí)間與資源。

想想其他失去的機(jī)會(huì),并比較任務(wù)的優(yōu)先級(jí)。

重寫大型系統(tǒng)比小型系統(tǒng)風(fēng)險(xiǎn)更高,考慮一下能否逐步重寫。我們同時(shí)執(zhí)行了以下幾項(xiàng)工作:切換到新的數(shù)據(jù)庫(kù)、使用“SOA”架構(gòu)、更換為二進(jìn)制協(xié)議,其實(shí)本可以逐步執(zhí)行這些更換。

考慮開(kāi)發(fā)者的偏見(jiàn)。在開(kāi)發(fā)者想要學(xué)習(xí)新技術(shù)或新語(yǔ)言的時(shí)候,他們會(huì)想要使用這些來(lái)重寫某些代碼。不過(guò)我不反對(duì)這樣做,這也是良好環(huán)境與文化的標(biāo)志,但應(yīng)當(dāng)將它與風(fēng)險(xiǎn)和機(jī)遇做比較。

Michael Meadows對(duì)何時(shí)有需要進(jìn)行“大型”重寫有著很好的看法:

技術(shù)上

組件的耦合度很高,無(wú)法單獨(dú)對(duì)某個(gè)組件進(jìn)行修改。重新設(shè)計(jì)單個(gè)組件會(huì)導(dǎo)致一連串的變化,不僅會(huì)影響到相鄰的組件,甚至間接影響到所有的組件。技術(shù)堆棧太過(guò)復(fù)雜,未來(lái)狀態(tài)設(shè)計(jì)需要變更很多的基礎(chǔ)架構(gòu)。出于這個(gè)原因執(zhí)行完全重寫十分必要,逐步重新設(shè)計(jì)在這種情況下沒(méi)有優(yōu)勢(shì)。重新設(shè)計(jì)單個(gè)組件無(wú)論如何都會(huì)導(dǎo)致對(duì)該組件的重寫,在現(xiàn)有設(shè)計(jì)中沒(méi)有可以插入新功能的地方。這種情況下逐步重新設(shè)計(jì)沒(méi)有優(yōu)勢(shì)。

政策上

贊助商無(wú)法理解逐步重新設(shè)計(jì)需要對(duì)項(xiàng)目進(jìn)行長(zhǎng)期投入。不可避免的是:大多數(shù)公司對(duì)于在逐步重新設(shè)計(jì)上繼續(xù)耗費(fèi)預(yù)算沒(méi)有興趣。在完全重寫代碼時(shí),這種現(xiàn)象也很難避免,但贊助商更愿意繼續(xù)投入,因?yàn)樗麄儾幌胗弥氤善返男孪到y(tǒng)與部分過(guò)時(shí)的舊系統(tǒng)。系統(tǒng)用戶更習(xí)慣使用“原本的界面”:在這種情況下,政策上不會(huì)允許修改系統(tǒng)的重要部分(前端)。但如果完全從頭開(kāi)始重寫,則會(huì)繞過(guò)這個(gè)問(wèn)題。用戶還會(huì)堅(jiān)持使用“相同的界面”,但這次你反擊的理由更為充足。要記得:逐步重新設(shè)計(jì)的總成本總是要高于完整重寫代碼,但一般來(lái)說(shuō)對(duì)企業(yè)的影響更小一些。在我看來(lái),如果重寫理由充足,公司又有超級(jí)優(yōu)秀的開(kāi)發(fā)者,那么就開(kāi)工吧。

放棄正在開(kāi)發(fā)的項(xiàng)目很危險(xiǎn):浪費(fèi)大量的時(shí)間和金錢重復(fù)實(shí)現(xiàn)已有功能,同時(shí)還會(huì)放棄實(shí)現(xiàn)新功能的機(jī)會(huì),有可能激怒客戶并導(dǎo)致工作計(jì)劃推遲。如果你正在重寫代碼,那是你的權(quán)力,不過(guò)請(qǐng)確保這么做的理由正確,同時(shí)了解風(fēng)險(xiǎn)也做了相關(guān)計(jì)劃。

責(zé)任編輯:未麗燕 來(lái)源: 程序師
相關(guān)推薦

2025-05-30 08:09:28

2011-07-07 10:49:41

JavaScript

2020-11-13 15:20:16

SCSS代碼前端

2023-10-23 13:03:04

2013-01-25 10:37:51

敏捷開(kāi)發(fā)

2017-01-05 16:29:00

2015-11-10 09:50:51

IT實(shí)施計(jì)劃IT

2010-07-06 16:22:14

2015-11-10 09:40:55

IT實(shí)施計(jì)劃IT

2009-10-20 09:17:27

2025-07-09 07:15:00

AIGenAICIO

2021-05-19 20:20:56

Oracle歸檔修復(fù)

2025-08-20 09:25:43

2010-02-23 16:17:59

2025-08-29 07:25:00

CIOAI企業(yè)

2025-09-28 07:00:00

IT人才招聘風(fēng)險(xiǎn)IT經(jīng)理

2009-09-10 18:28:00

交換機(jī)和路由器連接

2015-08-10 14:11:48

亞馬遜AWS中國(guó)Amazon S3

2021-11-29 10:43:14

業(yè)務(wù)轉(zhuǎn)型員工CIO

2017-08-21 08:20:03

海云捷迅教育云實(shí)戰(zhàn)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

乱色588欧美| 国产在线观看a| 91色porny蝌蚪| 免费观看成人网| 中文字幕一区二区三区精华液| 91热这里只有精品| 一区二区三区.www| www.黄在线观看| 日韩三级视频在线观看| 国内激情视频在线观看| 日韩亚洲国产中文字幕| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 亚洲不卡视频在线| 亚洲午夜精品一区二区三区他趣| 成年人在线视频| 亚洲毛茸茸少妇高潮呻吟| 免费看日产一区二区三区| 日韩专区精品| 国产伦一区二区三区色一情| 成人午夜激情在线| 妞干网视频在线观看| 亚洲人成电影在线| 天堂在线一二区| 日韩欧美国产三级电影视频| 国产综合色激情| 国产精品1区2区在线观看| 久久国产精品久久久久久电车| 99精品人妻少妇一区二区| 精品久久久久久电影| 中文在线8资源库| 国产精品欧美一区二区| 狠狠狠色丁香婷婷综合激情| 欧美精品乱码久久久久久 | 日日噜噜噜夜夜爽爽狠狠视频| 天天综合色天天综合色h| 美女精品导航| 2019亚洲男人天堂| 天堂久久久久va久久久久| 日韩中文字幕免费在线| 欧美日韩一区二区在线视频| 欧美激情三区| 久久久影院一区二区三区 | 久久久久久久久久久久av| 亚洲国产精品第一区二区| 韩国日本美国免费毛片| 日韩久久久精品| 成人亚洲一区二区| 成人小视频在线看| 欧美一区二区久久久| 欧美精品momsxxx| 丁香花在线影院观看在线播放| 欧美精品在线观看一区二区| 日本韩国欧美超级黄在线观看| 中文字幕日韩一区二区三区不卡 | 成人激情视频小说免费下载| 成人性视频免费网站| 成人动漫在线免费观看| 91精品国产乱码久久久久久久久| 亚洲午夜伦理| 日本一二三区视频免费高清| 久久亚洲综合国产精品99麻豆精品福利| 午夜视频一区| 久久综合色播| 久久久久久美女| 成人一级片网址| heyzo在线欧美播放| 97人人干人人| 香蕉成人啪国产精品视频综合网| 精品视频一区二区三区| 亚洲欧洲久久| 91精品国产一区二区三区蜜臀| 天堂8在线天堂资源bt| 欧美精品乱码久久久久久| 最新日韩欧美| 成人性生活视频免费看| 九九热视频这里只有精品| 欧美大陆国产| 亚洲精品国产精品国自产观看 | 日韩精品久久久久久久玫瑰园| 亚洲一区二区日韩| 成r视频免费观看在线播放| 欧美日韩xxx| www.日韩精品| 97成人超碰| 成年人网站国产| 伊人av综合网| 国产99精品视频| 欧美日韩免费观看视频| 自拍另类欧美| 日韩大片免费观看视频播放| 免费看黄色91| a'aaa级片在线观看| 亚欧洲精品在线视频免费观看| 欧美一区二区播放| 美日韩精品视频| 国产后进白嫩翘臀在线观看视频| 日本午夜精品一区二区| 日韩精品一区二区三区视频| 久热re这里精品视频在线6| 黄色精品免费看| 视频一区国产精品| 亚洲国语精品自产拍在线观看| 久久se这里有精品| 日韩毛片一区| 日韩欧美精品在线观看视频| 久久久久久久久久久免费精品| 亚洲欧洲99久久| 欧美伦理影院| 成全电影播放在线观看国语| 精品视频一区在线| 亚洲国产97在线精品一区| 免费在线视频一区| 欧美日韩免费看片| 丰满少妇在线观看| 国产精品视频播放| 欧美色涩在线第一页| 另类专区欧美蜜桃臀第一页| 78精品国产综合久久香蕉| 久久人妻精品白浆国产| 日本欧美精品在线| 欧美va亚洲va香蕉在线| 欧美亚洲日本黄色| 亚洲欧美日韩国产成人精品影院| 自拍视频一区| 国产小视频在线观看| 日本亚洲自拍| 在线亚洲男人天堂| 国产**成人网毛片九色| 老司机亚洲精品一区二区| 91大神影片| 99高清视频有精品视频| 欧美日韩国产大片| 国产九九视频一区二区三区| 日韩精品成人在线观看| 中文字幕在线看| 日本在线播放一区| 欧美成人久久久| 欧美日韩国产专区| 日日摸夜夜添夜夜添亚洲女人| 91麻豆精品一二三区在线| 翔田千里在线视频| 久久亚洲精品无码va白人极品| 欧美不卡视频一区发布| 久久99欧美| 国产精品久久久对白| 国产精品夫妻激情| 国产精品一久久香蕉国产线看观看| 久热爱精品视频线路一| 亚洲视频一区在线| 黑人一区二区三区四区五区| 亚洲精品555| 蜜桃av成人| 美女黄色片网站| 国产成人亚洲综合| 亚洲国产天堂久久国产91| 亚洲精品久久嫩草网站秘色| 欧美亚洲网站| 日本妇女一区| 9i看片成人免费高清| 麻豆影视在线观看| 国产精品裸体瑜伽视频| 国产一区福利视频| 欧美性受xxxx黑人猛交| 日韩欧美一级二级三级| 亚洲综合激情另类小说区| 国产一区二区看久久| 综合久久十次| 亚洲国产视频二区| 18加网站在线| 亚洲伦理电影| 欧美日韩精品在线一区二区| 国偷自产av一区二区三区小尤奈| 欧美激情一区二区三区高清视频| 精品少妇一区二区三区免费观看| 一区二区三区四区蜜桃| 99视频超级精品| 免费观看久久久4p| 一区二区日韩欧美| 欧美福利在线播放网址导航| 中文字幕乱码在线播放| 成人在线免费看| 超级碰碰视频| 免费观看美女裸体网站| 亚洲不卡1区| 国产精品推荐精品| 国产精品黄色影片导航在线观看| 日韩在线欧美在线国产在线| 精品少妇一区二区三区 | 黄网免费入口| 国产一二三在线视频| 欧洲高清一区二区| 2022国产精品| 国产成人精品免费久久久久| 久久激情视频免费观看| 亚洲国产婷婷香蕉久久久久久 | 国产资源在线观看入口av| 成黄免费在线| 午夜视频在线观看韩国| 欧美jiizzhd精品欧美| 99视频免费播放|