精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

拯救你的舊代碼庫,不得不看的11條軍規!

原創
開發 前端
每個程序員、項目經理或團隊負責人的生命周期中至少會發生一次這樣的事件:你接手一坨超過百萬行代碼的系統,原來的程序員很久以前就離職,現在也許正在某個陽光明媚的地方度假,文檔(如果有的話)最有可能的情況就是與現有的系統不同步。而你的工作則是帶領團隊脫離這個混亂。

[[195719]]

【51CTO.com原創稿件】每個程序員、項目經理或團隊負責人的生命周期中至少會發生一次這樣的事件:你接手一坨超過百萬行代碼的系統,原來的程序員很久以前就離職,現在也許正在某個陽光明媚的地方度假,文檔(如果有的話)最有可能的情況就是與現有的系統不同步。而你的工作則是帶領團隊脫離這個混亂。

在經歷逃離的本能回應之后,你開始對項目進行了了解,通過你手頭現有的東西,失敗是大概率發生的事件。但是,公司高層領導是不能容忍項目失敗的結果發生。你該如何應對?

[[195720]]

這時,如果能夠把這些垃圾代碼變成健康的可維護的項目,實際上是非常值得一試的事情。以下是我們總結的改進舊版代碼庫的一些經驗(或者叫軍規)

改進舊代碼庫的 11 條軍規

數據備份

我們很難記得每天修改了哪些東西,特別是配置數據容易受到這種問題的影響。配置通常不會進行版本控制,如果能夠進行定期備份,則可以規避很多麻煩。

在開始做任何事情之前,你需要備份所有可能相關的內容,放到一個非常安全的地方,確保不管發生什么情況都不會丟失數據。

構建一個真實的仿真環境

構建一個真實的仿真環境是重要的先決條件,***步是你確保知道現在正在生產環境運行的是什么,這意味著你能夠構建一個軟件版本和你的真實環境保持一致,相同的軟件環境與二進制版本。

如果你找不到一個方法來實現這一點,假如你提交代碼到生產環境,就可能會遇到一些令人不快的意外。確保新的代碼在合適環境盡可能地被測試,然后你才會有足夠的信心將其運行到生產環境。

上線時做好準備可以隨時切換回老的代碼,并確保通過日志記錄可以了解相關重要內容,以便在后續排查問題時能派上用場。

凍結 DB 修改

盡可能凍結數據庫修改,當完成***階段的改進,直到團隊對代碼庫有了徹底的了解,遺留代碼已經棄之不用時,才考慮修改數據庫結構。在此之前任何的數據庫修改都可能會導致一些棘手的問題,讓你失去并行運行舊系統和新的代碼庫的能力。

保持 DB 完全不變,你可以比較新的業務邏輯代碼與舊的業務邏輯代碼,如果所有這些效果都與預期一樣,則應該完全沒有區別。

編寫測試

在進行任何修改之前,編寫盡可能多的端到端以及集成測試,確保這些測試能夠產生正確的輸出,并覆蓋所有潛在的情況。

這些測試將具有兩個重要功能:一方面,幫助技術在早期階段清除任何誤解;另外一方面,一旦你開始編寫新代碼來替換舊代碼,這些測試將可以更好保護您的系統。

自動化你的所有測試,如果你已經有 CI 的經驗則盡快使用它,并確保您的測試運行足夠快,以便在每次提交后運行全套測試。

Instrumentation 和日志

如果舊平臺仍然可以增加 Instrumentation,在一個全新的數據庫表中執行此操作,為你可以考慮的每個事件添加一個簡單的計數器,并添加一個單個函數來實現此功能,以根據事件的名稱來增加這些計數器。

這樣,你可以使用一些額外的代碼行實現帶有時間戳的事件日志,你將了解到有多少事件導致另一種事件。

舉例來說,用戶打開應用程序,用戶關閉應用程序。如果兩個事件導致一些后端請求,那么這兩個計數器應該在長期上保持不變,差異是當前打開的應用程序的數量。

如果你看到更多的應用程序打開,而不是應用程序關閉,你知道必須有另一種應用程序結束的方式(例如崩潰)。

這個簡單的技巧可以將每個后端應用程序變成一個類似的簿記(bookkeeping)系統,就像一個真正的簿記系統那樣,所有的數字必須匹配,確保它們在所有用到的地方沒有問題。

隨著時間的推移,這個系統的健康監控變得非常寶貴,并且將成為源代碼控制系統變更日志的一個很好的伴侶,你可以在其中確定每個錯誤引入的時間點,以及對各種情況產生影響的計數。

我通常保留這些計數器的分辨率為 5 分鐘(因此每小時記錄 12次),但如果你的系統有更少或更多事件,則可能需要修改這個時間間隔。所有計數器使用同一個數據庫表,因此每個計數器只是該表中的一列。

每次只修改一個點

在添加新功能或修復錯誤的同時,不要陷入同時改進代碼以及修改代碼運行平臺的陷阱。這會導致很多頭大的問題。

平臺更改

如果你決定將應用程序遷移到另一個平臺,那么請先執行此操作,但要保持一切功能完全一樣。你可以添加更多的文檔或測試,但不能超過這一點,所有業務邏輯和相互依賴關系應該保持原樣。

架構變化

接下來要解決的是改變應用程序的架構(如果需要)。這個時候,你可以隨意更改代碼的較高級別結構,通常通過減少模塊之間的水平鏈接數量,從而減少與最終用戶進行任何交互時代碼活動的范圍。

如果舊代碼本質上是一體的,現在將是一個很好的時機使其更加模塊化,將大型功能分解成較小的功能,但是保留變量和數據結構的名稱。

架構修改并不總是可行,如果特別不幸運,那么可能需要非常深入理解代碼才能進行任何架構更改。

如果你同時進行高級別更改和低級別更改,至少需要將其限制在一個文件,或最壞情況下限制在一個子系統,以便盡可能限制更改的范圍。否則你可能很難調試剛才所做的更改。

低級重構

到目前為止,你應該對每個模塊的功能有很好的了解,并為實際工作做好準備:重構代碼以提高可維護性,并使代碼具備擴展新功能的能力。

這很可能是項目中耗時最多的一部分,文檔需要隨之進行,在完整編寫文檔介紹并徹底了解一個模塊之前,不要隨意更改模塊。

這個階段也可以修改變量和函數命名、修改數據結構,以提高代碼清晰度和一致性。記得添加相關測試代碼(根據需要,可進行單元測試)。

修復 bug

現在你準備好進行一些最終用戶可見的變化,***件事情將是修復多年來積累在隊列中的 bug。

像往常一樣,首先確認 bug 仍然存在,然后編寫一個測試并修復 bug,你的持續集成和端到端的測試可以幫你避免由于缺乏理解或某些錯誤而導致的任何錯誤及外圍問題。

數據庫升級

如果上述工作都已經完成,你可以再次擁有可靠且可維護的代碼庫,你可以選擇更改數據庫 schema 甚至替換數據庫。

已經完成的上述工作都將有助于您以無負擔的方式進行變革,而無需擔心任何意外,你可以使用新的代碼和所有的測試來測試新的數據庫,以確保你的遷移沒有任何問題。

更穩健的重構之路

在路線圖上前行

恭喜,到這里你已經走出了叢林,現在已經準備好可以實施任何新功能了。

[[195721]]

不要嘗試徹底重寫

徹底重寫是一種幾乎保證會失敗的項目。

一方面,你是在未知的領域開始,你甚至不知道要重構什么。

另一方面,你也將所有的問題推到***一天,就在你用新系統啟用之前的那一天。很悲劇的是,那也是你失敗的時刻。

業務邏輯的假設最終會證實存在問題,那時你將突然了解到為什么舊系統會用某種奇怪的方式來工作,最終也會意識到能將舊系統放在一起工作的人也不都是白癡。

如果你真的想要將公司(以及你自己的信譽)帶向一個泥潭,就來一個徹底大重寫吧!但如果你足夠聰明,徹底重寫系統通常不會成為會議桌上的一個討論選項。

替代方案:迭代式改進

要解開這些線團最快的方法就是從你已經理解的代碼入手(它可能是一個外圍設備,但也可能是一些核心模塊),并在它的舊的上下文的范圍內嘗試逐步改進。

如果舊的構建工具不再可用,你將不得不使用一些技巧(見下文),但至少在你開始更改時,盡可能多地保持舊的系統工作。一個典型的提交通常只包含數行代碼。

發布到生產環境

所有修改盡可能發布到生產環境,即使修改的代碼是最終用戶不可見的,因為當你對系統了解不足時,只有生產環境才會告訴你,新的修改哪里會有問題。

如果這個問題只是在小的改變之后出現,你將獲得幾個優勢:

  • 很容易弄清楚出了什么問題
  • 處于改善流程的良好狀態
  • 立即更新文檔,以記錄獲得的新見解

合理使用代理服務器

如果你正在重構一個 Web 系統,你可以在最終用戶和舊系統之間部署一個代理服務器。你可以精確控制每個 URL,哪些請求進入舊系統,哪些請求路由到新系統,從而可以更輕松,更精細地控制運行的內容。

如果你的代理足夠強大,你甚至可以控制將某個 URL 一定百分比的流量發送到新系統,以便觀察新系統的運行情況。如果你的集成測試也能夠連接到這個代理,那就更好了。

結語

如果按照這些步驟進行,確實存在不少工作,但是它的確有效,而且這個過程的任何優化都讓你進一步徹底了解整個系統。

有時候如果公司系統已經出現問題,而且可能會影響客戶時,如果按照這個流程進行可能使事情好轉,我寧愿完全控制和使用這個過程,而不是為了表面的節省幾天或幾周時間的方式。

如果你更多地是激進的做事方式,你的老板也同意,也許那是可以接受的高風險方式,但是大多數公司寧愿采取稍慢一點,更穩健的重構之路。

【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2019-12-10 15:30:27

SaaSIaaS云計算

2010-05-21 09:40:57

MySQL出錯代碼列表

2010-05-25 09:58:43

MySQL數據庫

2010-05-26 15:58:52

MySQL遠程連接

2010-05-18 10:34:29

MySQL數據庫備份

2014-10-30 13:38:55

編程算法程序員

2010-05-10 13:01:03

OracleDBA面試

2010-04-21 17:19:29

Oracle創建

2010-06-12 15:03:55

2010-07-23 18:39:52

SQL Server游

2010-08-18 11:36:40

DB2簡史

2022-11-24 12:42:10

亞馬遜云科技re:Inevent創新

2010-05-05 11:30:21

2020-07-09 12:50:29

JVM內存管理Java

2020-09-22 08:16:20

軟件開發原則

2010-08-02 11:01:29

DB2 Resotre

2017-05-17 14:46:22

容器DockerLinux

2010-05-26 13:14:22

MySQL錯誤解決方案

2010-09-28 09:42:16

2010-08-18 15:01:08

DB2 9安裝方法
點贊
收藏

51CTO技術棧公眾號

国产欧美一区二区三区不卡高清| 日韩中文字幕免费视频| 国产精品后入内射日本在线观看| 色综合888| 轻轻草成人在线| 免费91在线视频| 青青草成人免费视频| 欧美啪啪网站| 亚洲18色成人| 无码免费一区二区三区免费播放| 国产高清不卡视频| 亚洲欧美日本日韩| 欧美成人精品在线播放| 中文字幕高清视频| 国产一区二区高清在线| 色综合久久九月婷婷色综合| 中文字幕日韩一区二区三区不卡| 天天综合在线视频| 国内精品久久久久影院色| 午夜精品一区二区三区在线视| 日本一卡二卡在线播放| 国产香蕉精品| 欧美系列在线观看| 欧美日韩一道本| 中文在线手机av| 久久久精品日韩欧美| 成人在线资源网址| 一区二区www| 日本麻豆一区二区三区视频| 91精品国产色综合久久不卡98| 日韩欧美综合视频| 成人中文视频| 亚洲天堂av在线免费| av网页在线观看| 日韩精品中文字幕吗一区二区| 欧美三片在线视频观看 | 亚洲三级电影在线观看| 久久久国产一区二区三区| 一区二区黄色片| 精品自拍偷拍| 欧美精品一区二区不卡| 乳色吐息在线观看| 爱情电影网av一区二区| 欧美日韩在线观看一区二区| 无遮挡又爽又刺激的视频| 在线观看的黄色| 亚洲va国产天堂va久久en| 日韩免费在线观看av| 成年人网站在线| 亚洲人成人一区二区在线观看| 亚洲成人一区二区三区| 国产高清在线观看| 国产亚洲成av人在线观看导航| 久久久久久精| 男人的天堂在线免费视频| 91捆绑美女网站| 日本不卡在线播放| 岛国在线大片| 国产精品成人免费在线| 亚洲最新免费视频| 黄色网在线免费看| 亚洲欧美日本在线| 欧美黄网在线观看| gogo久久| 一本久久a久久精品亚洲| 韩国一区二区av| 国产亚洲一区二区手机在线观看 | 国产成人a人亚洲精品无码| 国产精品一区二区不卡| 99re国产视频| 四虎影视在线播放| 国产亚洲综合av| 一区二区三区的久久的视频| 1stkiss在线漫画| 亚洲成人av福利| 亚洲熟妇av一区二区三区| 日韩精品三区| 日韩一区二区三区在线视频| 91超薄肉色丝袜交足高跟凉鞋| 欧美成人午夜77777| 亚洲一级免费视频| 任我爽在线视频| 午夜日韩电影| 欧美一级片久久久久久久| 国产精品国产精品国产| 国模娜娜一区二区三区| 国产精品青青草| 韩国三级在线观看久| 中文字幕制服丝袜成人av| 亚洲色欲久久久综合网东京热| 亚洲精华液一区二区三区| 欧美日韩精品欧美日韩精品一综合| 亚洲一区二区中文字幕在线观看| 狠狠一区二区三区| 中文字幕精品网| 久久网免费视频| 天堂蜜桃一区二区三区| 91九色露脸| 欧美日韩视频精品二区| 亚洲色图一区二区三区| 国产91对白刺激露脸在线观看| 欧美黄色网络| 日韩av在线免费观看一区| 国产免费嫩草影院| 亚洲区一区二| 91精品在线看| 九一在线视频| 亚洲国产视频一区| 美女网站视频黄色| 精品精品国产毛片在线看| 日韩中文视频免费在线观看| 久久久精品免费看| 国产精品综合一区二区三区| 欧美自拍资源在线| 川上优av中文字幕一区二区| 在线电影一区二区三区| www.久久av| 亚洲小说欧美另类婷婷| 国产在线视频不卡| 久久久久国产精品嫩草影院| 亚洲综合偷拍欧美一区色| 激情五月俺来也| 亚洲人成网77777色在线播放| 久久91亚洲精品中文字幕| 亚洲精品一区二三区| 99精品久久只有精品| 欧美性潮喷xxxxx免费视频看| 色综合一区二区日本韩国亚洲 | 宅男噜噜噜66一区二区| 91色p视频在线| 性开放的欧美大片| 欧美在线小视频| 久久精品国产亚洲av麻豆| 亚洲国产专区校园欧美| 成人91视频| 中文在线免费| 91精品国产一区二区三区| 日本美女bbw| 日韩福利视频导航| 欧洲亚洲一区二区三区四区五区| 在线毛片观看| 日韩精品视频中文在线观看| 日本少妇全体裸体洗澡| 国产成人在线色| 五月天激情图片| 精品国产乱码久久久久久樱花| www日韩欧美| 国产尤物在线观看| 亚洲欧洲一区二区在线播放| 久久久久久久久久一区二区| 亚洲成av人片乱码色午夜| 国产在线视频一区| mm1313亚洲国产精品美女| 日韩一区二区三免费高清| 唐朝av高清盛宴| 国产成人免费xxxxxxxx| 久久久久久久9| 久久综合另类图片小说| 欧美一级视频在线观看| 黄色的视频在线免费观看| 91黄色免费看| 秋霞欧美一区二区三区视频免费| 国产一区二区三区精品欧美日韩一区二区三区 | av在线电影网| 欧美丰满少妇xxxbbb| 欧美在线视频第一页| 国产999精品久久久久久绿帽| av免费看网址| 久久不见久久见中文字幕免费| 国产精品久久久久77777| 麻豆tv在线| 精品少妇一区二区三区日产乱码 | av伦理在线| 亚洲欧美日韩一区二区在线| 欧美性受xxx黑人xyx性爽| 最新不卡av在线| 在线精品视频播放| 久热精品视频| 一区二区三区四区免费观看| 综合中文字幕| 国产精品99久久久久久久久久久久| 欧美一级二级三级区| 精品国精品自拍自在线| 国产无人区码熟妇毛片多| 中文字幕中文字幕在线一区| 风韵丰满熟妇啪啪区老熟熟女| 国产日韩一区| 公共露出暴露狂另类av| 日韩精品导航| 国产伊人精品在线| 福利影院在线看| 亚洲欧美国产精品专区久久 | 激情亚洲综合在线| 欧美激情视频免费看| 国产日产精品一区二区三区四区的观看方式 | 精品素人av| 国产精品视频男人的天堂| 九七久久人人| 亚洲人成自拍网站| 国产福利免费视频| 欧美优质美女网站| 日韩 欧美 精品| 最新高清无码专区| 免费看黄色的视频| 丁香激情综合国产| 中文字幕亚洲乱码| 男人天堂欧美日韩| av在线免费观看国产| 日韩aaaa| 欧美日韩综合另类| 精品精品国产毛片在线看| 亚洲xxxx3d| 先锋欧美三级| 欧美一级电影免费在线观看| av在线麻豆| 日韩中文字幕av| 毛片在线播放网址| 亚洲国产欧美在线成人app| 国产又粗又猛又爽又黄的视频一 | 国产绿帽一区二区三区| 欧美在线小视频| 日本一区二区三区精品| 亚洲主播在线观看| 欧美特级一级片| 国产精品电影院| 我不卡一区二区| 久久无码av三级| 亚洲蜜桃精久久久久久久久久久久| 国产成人在线看| 手机免费看av网站| 理论电影国产精品| 国产小视频精品| 日韩高清国产一区在线| 青青在线视频免费| 国产精品婷婷| 国产淫片免费看| 99国产精品| 草草久久久无码国产专区| 一本久道久久久| 欧美成人免费在线观看视频| 黄色成人精品网站| 国产成人艳妇aa视频在线 | 国产精品国产精品国产专区| 欧美日韩免费视频| 亚洲一区 中文字幕| 欧美天堂一区二区三区| 最新中文字幕免费| 欧美视频在线一区二区三区| 中文字幕 亚洲视频| 在线观看91精品国产入口| 黄色片视频免费| 欧美色综合影院| 97精品人妻一区二区三区在线| 欧美精品免费视频| 国产视频第一页| 日韩免费高清av| 亚洲精品97久久中文字幕| 精品国产电影一区二区| 无码国产伦一区二区三区视频| 日韩精品免费在线| 欧美老女人性开放| 色婷婷综合久久久久| a篇片在线观看网站| 久久久欧美一区二区| 午夜伦理福利在线| 国产经典一区二区| 羞羞视频在线观看一区二区| 超碰97在线资源| 亚洲瘦老头同性70tv| 亚洲一区在线直播| 欧美成人日韩| 久久网站免费视频| 免费在线观看成人| 伊人av在线播放| 波多野结衣中文字幕一区二区三区 | 成人a v视频| 在线不卡欧美精品一区二区三区| 精品黑人一区二区三区国语馆| 精品国产免费人成在线观看| 青青免费在线视频| 久久国产一区二区三区| 国产精品电影| 国产裸体写真av一区二区 | 97se综合| 97久草视频| 久久91精品| 成人性做爰片免费视频| aⅴ色国产欧美| 中文字幕在线观看日| eeuss鲁片一区二区三区在线观看| 男人操女人动态图| 亚洲综合一区二区三区| 久久久999久久久| 精品国产一区二区三区不卡| 超碰免费在线| 午夜精品国产精品大乳美女| 国产亚洲欧美日韩精品一区二区三区 | 波多野结衣在线观看一区二区三区 | 亚洲专区国产精品| 国产一区日韩| 国产精品一色哟哟| 精品一区二区影视| 无码人妻精品一区二区三应用大全 | 精品精品国产高清a毛片牛牛| 黄色在线小视频| 国语自产在线不卡| 日日夜夜综合| 日韩电影免费观看在| 在线观看日韩av电影| 国产精品嫩草影院8vv8| 国产日本欧美一区二区| 日本熟妇一区二区| 91麻豆精品国产91久久久更新时间 | 亚洲欧美在线观看视频| 欧美一区二区三区视频在线| 国产视频精品久久| 97精品国产91久久久久久| 蜜桃精品一区二区三区| 神马影院我不卡午夜| 国产欧美日韩综合一区在线播放| 无码人妻丰满熟妇区毛片蜜桃精品 | 久久av色综合| 91在线视频一区| 成人精品视频| 国产偷人视频免费| av高清久久久| 久久精品久久国产| 日韩一区二区三区av| a视频在线观看免费| 国产一区二中文字幕在线看| 欧美中文一区二区| 无码精品国产一区二区三区免费| 成人国产精品免费| 久久网一区二区| 亚洲成在人线av| 成人超碰在线| 国产精品推荐精品| 亚洲国产裸拍裸体视频在线观看乱了中文 | av成人亚洲| 亚洲国产精品123| 秋霞国产午夜精品免费视频| 精品无码在线观看| 91福利国产成人精品照片| 青梅竹马是消防员在线| 欧美一级片久久久久久久| 伊人春色精品| 久草综合在线观看| 久久精品亚洲精品国产欧美| 国产一区免费看| 在线观看欧美成人| 国产69精品久久| 手机成人av在线| 国产裸体歌舞团一区二区| 免费又黄又爽又色的视频| 欧美成人乱码一区二区三区| 伊人福利在线| 国产一区二区三区黄| 久久精品一区二区国产| 免费黄色片网站| 欧美军同video69gay| 超碰免费在线播放| 99精彩视频在线观看免费| 亚洲久久一区| 人人人妻人人澡人人爽欧美一区| 欧美三电影在线| 在线看福利影| 精品国产乱码久久久久久蜜柚| 国产欧美激情| 免费91在线观看| 日韩女优制服丝袜电影| av岛国在线| 日韩视频精品| 国产精品一级片在线观看| 日产精品久久久| 色噜噜国产精品视频一区二区| 精品国产一区二区三区性色av| 国产精品久久久久9999爆乳| 久久综合久久综合九色| 中文字幕一区二区三区四区视频 | 欧美成人高清视频在线观看| 超薄肉色丝袜足j调教99| 95精品视频在线| 中文字字幕在线观看| 欧美激情亚洲视频| 久草成人在线| 丰满人妻一区二区三区大胸| 色综合久久久久久久久| 成人看片免费| 欧美日韩精品免费观看| 国产一区二区免费看| 日韩欧美一级视频| 日日噜噜噜夜夜爽亚洲精品| 麻豆一区一区三区四区| 可以看污的网站| 日韩欧美在线网址 | 不卡视频在线| 欲求不满的岳中文字幕| 51午夜精品国产| 成人在线爆射| 9久久9毛片又大又硬又粗|