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

你知道如何改善遺留的代碼庫嗎?

開發
在每一個程序員、項目管理員、團隊領導的一生中,這都會至少發生一次。原來的程序員早已離職去度假了,給你留下了一坨幾百萬行屎一樣的、勉強支撐公司運行的代碼和(如果有的話)跟代碼驢頭不對馬嘴的文檔。

[[214933]]

在每一個程序員、項目管理員、團隊領導的一生中,這都會至少發生一次。原來的程序員早已離職去度假了,給你留下了一坨幾百萬行屎一樣的、勉強支撐公司運行的代碼和(如果有的話)跟代碼驢頭不對馬嘴的文檔。

你的任務:帶領團隊擺脫這個混亂的局面。

當你的***反應(逃命)過去之后,你開始去熟悉這個項目。公司的管理層都在關注著你,所以項目只能成功;然而,看了一遍代碼之后卻發現失敗幾乎是不可避免。那么該怎么辦呢?

幸運(不幸)的是我已經遇到好幾次這種情況了,我和我的小伙伴發現將這坨熱氣騰騰的屎變成一個健康可維護的項目是一個有豐厚利潤的業務。下面這些是我們的一些經驗:

 

備份

在開始做任何事情之前備份與之可能相關的所有文件。這樣可以確保不會丟失任何可能會在另外一些地方很重要的信息。一旦修改了其中一些文件,你可能花費一天或者更多天都解決不了這個愚蠢的問題。配置數據通常不受版本控制,所以特別容易受到這方面影響,如果定期備份數據時連帶著它一起備份了,還是比較幸運的。所以謹慎總比后悔好,復制所有東西到一個絕對安全的地方并不要輕易碰它,除非這些文件是只讀模式。

 

重要的先決條件:必須確保代碼能夠在生產環境下構建運行并產出

之前我假設環境已經存在,所以完全丟了這一步,但 Hacker News 的眾多網友指出了這一點,并且事實證明他們是對的:***步是確認你知道在生產環境下運行著什么東西,也意味著你需要在你的設備上構建一個跟生產環境上運行的版本每一個字節都一模一樣的版本。如果你找不到實現它的辦法,一旦你將它投入生產環境,你很可能會遭遇一些預料之外的糟糕事情。確保每一部分都盡力測試,之后在你足夠確信它能夠很好的運行的時候將它部署生產環境下。無論它運行的怎么樣都要做好能夠馬上切換回舊版本的準備,確保日志記錄下了所有情況,以便于接下來不可避免的 “驗尸” 。

 

凍結數據庫

直到你修改代碼結束之前盡可能凍結你的數據庫,在你已經非常熟悉代碼庫和遺留代碼之后再去修改數據庫。在這之前過早的修改數據庫的話,你可能會碰到大問題,你會失去讓新舊代碼和數據庫一起構建穩固的基礎的能力。保持數據庫完全不變,就能比較新的邏輯代碼和舊的邏輯代碼運行的結果,比較的結果應該跟預期的沒有差別。

 

寫測試

在你做任何改變之前,盡可能多的寫一些端到端測試和集成測試。確保這些測試能夠正確的輸出,并測試你對舊的代碼運行的各種假設(準備好應對一些意外狀況)。這些測試有兩個重要的作用:其一,它們能夠在早期幫助你拋棄一些錯誤觀念,其二,這些測試在你寫新代碼替換舊代碼的時候也有一定防護作用。

要自動化測試,如果你有 CI 的使用經驗可以用它,并確保在你提交代碼之后 CI 能夠快速的完成所有測試。

 

日志監控

如果舊設備依然可用,那么添加上監控功能。在一個全新的數據庫,為每一個你能想到的事件都添加一個簡單的計數器,并且根據這些事件的名字添加一個函數增加這些計數器。用一些額外的代碼實現一個帶有時間戳的事件日志,你就能大概知道發生多少事件會導致另外一些種類的事件。例如:用戶打開 APP 、用戶關閉 APP 。如果這兩個事件導致后端調用的數量維持長時間的不同,這個數量差就是當前打開的 APP 的數量。如果你發現打開 APP 比關閉 APP 多的時候,你就必須要知道是什么原因導致 APP 關閉了(例如崩潰)。你會發現每一個事件都跟其它的一些事件有許多不同種類的聯系,通常情況下你應該盡量維持這些固定的聯系,除非在系統上有一個明顯的錯誤。你的目標是減少那些錯誤的事件,盡可能多的在開始的時候通過使用計數器在調用鏈中降低到指定的級別。(例如:用戶支付應該得到相同數量的支付回調)。

這個簡單的技巧可以將每一個后端應用變成一個像真實的簿記系統一樣,而像一個真正的簿記系統,所有數字必須匹配,如果它們在某個地方對不上就有問題。

隨著時間的推移,這個系統在監控健康方面變得非常寶貴,而且它也是使用源碼控制修改系統日志的一個好伙伴,你可以使用它確認 BUG 引入到生產環境的時間,以及對多種計數器造成的影響。

我通常保持每 5 分鐘(一小時 12 次)記錄一次計數器,但如果你的應用生成了更多或者更少的事件,你應該修改這個時間間隔。所有的計數器公用一個數據表,每一個記錄都只是簡單的一行。

 

一次只修改一處

不要陷入在提高代碼或者平臺可用性的同時添加新特性或者是修復 BUG 的陷阱。這會讓你頭大,因為你現在必須在每一步操作想好要出什么樣的結果,而且會讓你之前建立的一些測試失效。

 

修改平臺

如果你決定轉移你的應用到另外一個平臺,最主要的是跟之前保持一模一樣。如果你覺得需要,你可以添加更多的文檔和測試,但是不要忘記這一點,所有的業務邏輯和相互依賴要跟從前一樣保持不變。

 

修改架構

接下來處理的是改變應用的結構(如果需要)。這一點上,你可以自由的修改高層的代碼,通常是降低模塊間的橫向聯系,這樣可以降低代碼活動期間對終端用戶造成的影響范圍。如果舊代碼很龐雜,那么現在正是讓它模塊化的時候,將大段代碼分解成眾多小的部分,不過不要改變量和數據結構的名字。

Hacker News 的 mannykannot 網友指出,修改高層代碼并不總是可行,如果你特別不幸的話,你可能為了改變一些架構必須付出沉重的代價。我贊同這一點也應該在這里加上提示,因此這里有一些補充。我想額外補充的是如果你修改高層代碼的時候修改了一點點底層代碼,那么試著只修改一個文件或者最壞的情況是只修改一個子系統,盡可能限制修改的范圍。否則你可能很難調試剛才所做的更改。

 

底層代碼的重構

現在,你應該非常理解每一個模塊的作用了,準備做一些真正的工作吧:重構代碼以提高其可維護性并且使代碼做好添加新功能的準備。這很可能是項目中最消耗時間的部分,記錄你所做的任何操作,在你徹底的記錄并且理解模塊之前不要對它做任何修改。之后你可以自由的修改變量名、函數名以及數據結構以提高代碼的清晰度和統一性,然后請做測試(情況允許的話,包括單元測試)。

 

修復 bug

現在準備做一些用戶可見的修改,戰斗的***步是修復很多積累了幾年的 bug。像往常一樣,首先證實 bug 仍然存在,然后編寫測試并修復這個 bug,你的 CI 和端對端測試應該能避免一些由于不太熟悉或者一些額外的事情而犯的錯誤。

 

升級數據庫

如果你在一個堅實且可維護的代碼庫上完成所有工作,你就可以選擇更改數據庫模式的計劃,或者使用不同的完全替換數據庫。之前完成的步驟能夠幫助你更可靠的修改數據庫而不會碰到問題,你可以完全的測試新數據庫和新代碼,而之前寫的所有測試可以確保你順利的遷移。

 

按著路線圖執行

祝賀你脫離的困境并且可以準備添加新功能了。

 

任何時候都不要嘗試徹底重寫

徹底重寫是那種注定會失敗的項目。一方面,你在一個未知的領域開始,所以你甚至不知道構建什么,另一方面,你會把所有的問題都推到新系統馬上就要上線的前一天。非常不幸的是,這也是你失敗的時候。假設業務邏輯被發現存在問題,你會得到異樣的眼光,那時您會突然明白為什么舊系統會用某種奇怪的方式來工作,最終也會意識到能將舊系統放在一起工作的人也不都是白癡。在那之后。如果你真的想破壞公司(和你自己的聲譽),那就重寫吧,但如果你是聰明人,你會知道徹底重寫系統根本不是一個可選的選擇。

 

所以,替代方法:增量迭代工作

要解開這些線團最快方法是,使用你熟悉的代碼中任何的元素(它可能是外部的,也可能是內核模塊),試著使用舊的上下文去增量改進。如果舊的構建工具已經不能用了,你將必須使用一些技巧(看下面),但至少當你開始做修改的時候,試著盡力保留已知的工作。那樣隨著代碼庫的提升你也對代碼的作用更加理解。一個典型的代碼提交應該最多兩三行。

 

發布!

每一次的修改都發布到生產環境,即使一些修改不是用戶可見的。使用最少的步驟也是很重要的,因為當你缺乏對系統的了解時,有時候只有生產環境能夠告訴你問題在哪里。如果你只做了一個很小的修改之后出了問題,會有一些好處:

  • 很容易弄清楚出了什么問題
  • 這是一個改進流程的好位置
  • 你應該馬上更新文檔展示你的新見解

 

使用代理的好處

如果你做 web 開發那就謝天謝地吧,可以在舊系統和用戶之間加一個代理。這樣你能很容易的控制每一個網址哪些請求定向到舊系統,哪些請求定向到新系統,從而更輕松更精確的控制運行的內容以及誰能夠看到運行系統。如果你的代理足夠的聰明,你可以使用它針對個別 URL 把一定比例的流量發送到新系統,直到你滿意為止。如果你的集成測試也能連接到這個接口那就更好了。

 

是的,但這會花費很多時間!

這就取決于你怎樣看待它了。的確,在按照以上步驟優化代碼時會有一些重復的工作步驟。但是它確實有效,而這里介紹的任何一個步驟都是假設你對系統的了解比現實要多。我需要保持聲譽,也真的不喜歡在工作期間有負面的意外。如果運氣好的話,公司系統已經出現問題,或者有可能會嚴重影響到客戶。在這樣的情況下,我比較喜歡完全控制整個流程得到好的結果,而不是節省兩天或者一星期。如果你更多地是牛仔的做事方式,并且你的老板同意可以接受冒更大的風險,那可能試著冒險一下沒有錯,但是大多數公司寧愿采取稍微慢一點但更確定的勝利之路。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2009-06-29 15:12:00

JNA

2021-02-19 07:59:21

數據埋點數據分析大數據

2019-11-13 08:37:34

數據庫筒倉基礎架構

2015-09-11 15:56:52

內核構建Linux

2017-06-23 15:45:09

AndroidThread

2024-06-20 08:06:30

2025-01-16 16:41:00

ObjectConditionJDK

2023-02-28 07:39:18

2022-10-14 18:19:41

YouTube

2024-10-05 00:00:00

HTTPS性能HTTP/2

2024-06-07 08:26:10

2025-05-07 04:45:00

AIOPS數據庫Oracle

2025-04-30 09:06:23

AI知識庫大模型

2023-01-31 09:02:24

JSVMVR

2022-06-01 07:10:43

遞歸字典極限

2022-04-11 08:20:36

編程輔助工具GitHubCopilot

2020-06-24 11:59:31

PythonPandas數據處理

2023-06-08 07:48:03

Java線程池

2024-07-08 00:00:01

多線程ThreadC#

2023-01-13 17:02:10

操作系統鴻蒙
點贊
收藏

51CTO技術棧公眾號

日韩精品在线播放| 国产精品久久久久婷婷| 久久人人97超碰精品888| 加勒比精品视频| 超碰一区二区| 亚洲欧美一区二区三区孕妇| www.成人三级视频| 天天干天天插天天射| 一本一道久久a久久精品蜜桃| 亚洲成年人影院在线| 九热视频在线观看| 另类视频在线| 国产精品久久久久久久久免费相片| 91久久偷偷做嫩草影院| 天干夜夜爽爽日日日日| 欧美日韩蜜桃| 最近2019年手机中文字幕| 2018国产精品| 亚洲国产综合在线观看| 欧美日韩在线影院| 久久观看最新视频| 国产黄在线观看| av欧美精品.com| 亚洲va男人天堂| 国产第一页在线观看| 激情婷婷亚洲| 欧美俄罗斯性视频| 男人晚上看的视频| 精品国产91乱码一区二区三区四区| 日韩精品一区二区三区在线播放 | 久久久久久影院| 亚洲成人在线网| 精品国产乱码久久久久久1区二区 91网址在线观看精品 | 日韩黄色在线| 色偷偷久久一区二区三区| 毛片av在线播放| 国产鲁鲁视频在线观看特色| 久久免费看少妇高潮| 高清av免费一区中文字幕| 国产又粗又猛又黄又爽无遮挡| 久久久久一区| 欧美另类高清videos| 精品手机在线视频| 欧美精品一区二区三区精品| 亚洲乱码一区二区| 日本黄色片在线播放| 国产精品毛片久久久| 日韩写真欧美这视频| 肉色超薄丝袜脚交| 国产999精品在线观看| 欧美三级在线播放| 69久久久久久| 欧洲成人一区| 欧美日韩精品三区| 久久黄色片网站| 国产成人午夜性a一级毛片| 在线观看亚洲精品| 激情 小说 亚洲 图片: 伦| 精品一区二区中文字幕| 手机在线观看毛片| 粉嫩av亚洲一区二区图片| 444亚洲人体| 亚洲欧美激情在线观看| 不卡视频免费播放| 另类欧美小说| 国产在线视频网| 欧美经典三级视频一区二区三区| 日韩电影免费观看高清完整| 91视频在线观看| 自拍偷拍亚洲欧美日韩| 99视频精品全部免费看| 国产理论电影在线| 岛国av午夜精品| 欧美 日韩 国产 激情| jvid一区二区三区| 91精品国产黑色紧身裤美女| 日本少妇一级片| 群体交乱之放荡娇妻一区二区| 亚洲天堂视频在线观看| www成人啪啪18软件| 午夜精品久久| 8090成年在线看片午夜| 无码无套少妇毛多18pxxxx| 蜜桃视频一区二区| 成人两性免费视频| 欧美特黄一级视频| 国产三级久久久| 超碰97在线看| 91精品论坛| 欧美丰满少妇xxxxx高潮对白| 熟妇无码乱子成人精品| 日韩深夜福利| 俺去啦;欧美日韩| 男人的天堂一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品视频成人| 黄色成人一级片| 国产午夜一区二区三区| 青青在线视频免费观看| 3d性欧美动漫精品xxxx软件| 日韩一卡二卡三卡四卡| 国产熟妇搡bbbb搡bbbb| 亚洲天堂免费| 国产精品18久久久久久麻辣| 50度灰在线观看| 精品人妻一区二区三区换脸明星| av影院午夜一区| 伊人婷婷久久| 黑人巨大亚洲一区二区久| 4438x亚洲最大成人网| 在线观看国产三级| 亚洲天堂免费| 国产男女猛烈无遮挡91| 天天摸夜夜添狠狠添婷婷| 国产精品美女久久久久久久网站| 麻豆tv在线播放| 懂色av色香蕉一区二区蜜桃| 亚洲免费一级电影| 久久久久免费看| 激情文学综合丁香| 日韩不卡av| 天堂av中文在线观看| 欧美不卡123| 亚洲欧美精品久久| 日韩专区在线视频| 久久综合九色欧美狠狠| 黄色的视频在线观看| 欧美日韩成人激情| 谁有免费的黄色网址| 国产午夜久久| 国产区日韩欧美| 国产在线激情视频| 欧美三级三级三级爽爽爽| 黄色正能量网站| 亚洲另类视频| 国产精品一区二区三区不卡 | 国外成人在线直播| 国产免费无遮挡| 中文字幕一区二区三区av| 在线观看av日韩| 国产一区2区| 国产成人一区三区| 国产在线视频资源| 在线欧美小视频| 国产精品扒开腿做爽爽| 亚洲一区一卡| 欧美日韩综合另类| 成人片免费看| 亚洲一区二区久久久| 亚洲不卡视频在线观看| 久久综合999| 激情综合网俺也去| 日韩电影在线视频| 国产男女猛烈无遮挡91| 久操视频在线| 日韩欧美在线影院| 久久影院一区二区| 成人v精品蜜桃久久一区| 男人添女荫道口图片| 精品网站aaa| 日本高清不卡的在线| 你懂的好爽在线观看| 91九色最新地址| 手机av在线不卡| 国模无码大尺度一区二区三区| 中日韩在线视频| 国产一区二区三区免费观看在线 | 亚洲国产高清国产精品| 成人自拍视频网| 久久亚洲影音av资源网 | 欧美日韩午夜爽爽| av综合网址| 欧美一区视频在线| 尤物网在线观看| 欧美一区二区啪啪| 在线观看 中文字幕| ww久久中文字幕| 国内国产精品天干天干| 欧美在线三区| 久久精品国产综合精品| 岛国一区二区| 欧美国产视频一区二区| 青青操在线视频| 69久久99精品久久久久婷婷| 成年人免费看毛片| 欧美激情资源网| 亚洲少妇一区二区| 日韩专区中文字幕一区二区| 青青视频免费在线| 你懂的视频欧美| 亚洲aa在线观看| 自拍视频在线看| 久久精品国产一区| 日韩porn| 欧美一区二区三区小说| 天堂在线免费观看视频| 综合色天天鬼久久鬼色| 中文字幕免费看| 国产激情一区二区三区四区| 精品国产成人av在线免| 欧美不卡高清| 亚洲第一在线综合在线| 懂色av一区二区| 国产伦精品一区二区三区精品视频| 免费电影视频在线看| 一道本无吗dⅴd在线播放一区| 国产91免费在线观看| 欧美色精品在线视频| 欧美三级午夜理伦| 亚洲另类中文字| 五月激情四射婷婷| 久久日韩粉嫩一区二区三区| 久久久久亚洲av片无码v| 日本网站在线观看一区二区三区| 阿v天堂2018| 欧美91大片| 亚洲欧美丝袜| 亚洲免费福利一区| 国产伦精品一区二区三区高清版| 欧美一级网址| 国产精品成熟老女人| 岛国av在线播放| 欧美激情videos| 国产网站在线免费观看| 日韩亚洲精品视频| 黄色片在线免费观看| 亚洲高清免费观看高清完整版| 国产又粗又长视频| 欧美精品日韩一区| 在线观看毛片网站| 在线观看www91| 无码人妻熟妇av又粗又大| 欧美午夜片在线免费观看| 99免费在线观看| 亚洲一区在线视频| 免费在线视频观看| 亚洲精品国产视频| 国产乱国产乱老熟300| 自拍偷在线精品自拍偷无码专区 | 亚洲国产aⅴ成人精品无吗| 午夜精品福利在线视频| 1024精品合集| 午夜爱爱毛片xxxx视频免费看| 国产精品免费丝袜| 国产美女高潮视频| 日韩美女视频一区二区 | 成人免费看吃奶视频网站| 另类一区二区| 国产欧美在线播放| 亚洲热av色在线播放| 91青草视频久久| 秋霞影院一区| yellow视频在线观看一区二区| 午夜日韩影院| 国产视频一区二区三区四区| 男人的天堂久久| 欧美一进一出视频| 欧洲福利电影| 亚洲三区在线观看| 中文字幕亚洲精品乱码| 激情六月天婷婷| 99热免费精品在线观看| 久久成人免费观看| 日韩高清欧美激情| 国产欧美一区二| 国产91精品入口| 少妇精品一区二区三区| 国产亚洲欧美激情| 免费黄色激情视频| 亚洲一区二区在线免费观看视频| 国产网站在线看| 色婷婷综合久久久| 国产精品视频久久久久久| 精品欧美一区二区久久| 欧美拍拍视频| 久久精品91久久久久久再现| 白白色在线观看| 亲子乱一区二区三区电影| 欧美大片网站| 国产欧美亚洲日本| 波多野结衣的一区二区三区 | 久久综合伊人77777麻豆| 欧美手机在线| 国产精品无码电影在线观看| 国产一区二区三区的电影| 黄大色黄女片18第一次| 国产白丝精品91爽爽久久| a毛片毛片av永久免费| 亚洲视频图片小说| 国产原创视频在线| 欧美狂野另类xxxxoooo| 少妇高潮久久久| 色吧影院999| 亚洲天堂免费电影| 亚洲综合中文字幕68页| 综合国产视频| av免费看网址| 国产中文字幕精品| 精品国产无码在线观看| 亚洲自拍偷拍网站| 亚洲一级片免费看| 亚洲免费高清视频| 久久大胆人体| 成人av电影天堂| 自拍欧美一区| 日韩视频免费播放| 韩国视频一区二区| 91成人在线免费视频| 亚洲一级片在线观看| 国产一区二区自拍视频| 亚洲乱码国产乱码精品精| 高清电影在线免费观看| 成人在线激情视频| 成人看的视频| 国产免费一区二区三区视频| 国产成都精品91一区二区三| 在线观看天堂av| 91国偷自产一区二区使用方法| 高潮毛片7777777毛片| 久久精品电影一区二区| 91精品店在线| 欧美日韩亚洲在线| 亚洲一区日韩| 色婷婷精品久久二区二区密| 亚洲欧美激情在线| 亚洲综合精品在线| 国产一区二区三区在线观看网站 | 国自产拍偷拍福利精品免费一 | 日本一区二区免费在线观看视频 | 亚洲一二三四五六区| 日本韩国精品在线| 蜜桃视频在线免费| 国产91精品高潮白浆喷水| 精品深夜福利视频| 波多野结衣之无限发射| 成人精品视频网站| 久久精品免费在线| 精品福利在线导航| 欧美14一18处毛片| 国产91精品入口17c| 欧美女人交a| 亚洲av无码一区东京热久久| 一区二区三区欧美| 亚洲爱情岛论坛永久| 欧美激情在线有限公司| 国产香蕉精品| 北条麻妃69av| 久久久精品黄色| 69av视频在线观看| 中文国产成人精品久久一| 本网站久久精品| 性欧美18一19内谢| 国产成人免费网站| 日本网站在线免费观看| 日韩精品日韩在线观看| 奇米777日韩| 亚洲一区二区三区精品在线观看| 蜜臀av性久久久久av蜜臀妖精| 亚洲人与黑人屁股眼交| 91福利在线免费| 日韩av免费看网站| 欧美日韩国产传媒| 一区二区三区欧美精品| 亚洲日本一区二区三区| 国产xxxx在线观看| 亚洲3p在线观看| 精品久久久亚洲| 亚洲高清视频免费| 亚洲国产精品一区二区www在线| 欧美一级做性受免费大片免费| 国产91|九色| 久久影视一区| 亚洲高清无码久久| 色婷婷久久综合| 在线观看h片| 成人影片在线播放| 老鸭窝91久久精品色噜噜导演| 亚洲自拍偷拍图| 欧美一区二区三区四区高清| a级大胆欧美人体大胆666| 色一情一乱一伦一区二区三欧美| 精彩视频一区二区三区| 欧美三级免费看| 亚洲日本成人女熟在线观看| 亚洲日日夜夜| 日本午夜激情视频| 国产精品久久午夜| 蜜臀久久久久久999| 国产精品你懂得| 影音先锋国产精品| 国产伦理片在线观看| 欧美一区中文字幕| 欧美片第一页| 日本一本中文字幕| 亚洲国产高清在线| 五月婷婷深深爱| 147欧美人体大胆444| 日韩国产精品大片| 国产乡下妇女做爰视频| y97精品国产97久久久久久|