最近編譯公司的乙個老系統的c++原始碼(主要是想把乙個功能摘出來),該系統由乙個主呼叫工程和幾十個dll工程組成。結果是編譯編得我要**,最後是把主呼叫工程編出來了,執行時還有問題,逐一檢查後才解決了。後來我歸納的主要原因是:我只是稍微熟悉這個系統的架構,但大部分的原始碼工程並不熟悉,所依賴的第三方庫也不了解。
這還只是系統內部的層次結構,一般系統還有大量的系統第三方庫支撐(包括商業的和開源的庫)。如果你不明白其中的複雜性,我舉個簡單的例子:比如utility層依賴的乙個第三方庫發生變動(介面變化或版本公升級),極有可能造成所有工程都要重新編譯。這還是理想的情況下重編。如果你不明白系統的層次結構,還得先花精力去弄明白系統的層次結構。設計良好的系統一般層次結構清晰,設計不良好的系統則各有各的混亂,比如迴圈依賴,依賴的第三方庫版本不一致等問題。還有就是特定作業系統的問題,比如windows系統下多個c執行庫(多執行緒的、單執行緒的、動態的、靜態的),編譯時鏈結選項不一致都會造成麻煩。所有這些因素無疑都大大加深了系統的複雜性。
那麼乙個老系統的原始碼應該如何維護呢?我感覺乙個總的原則是盡量控制你所能控制的。具體是以下幾點:
1. 盡量掌握所依賴的第三方庫的源**並保留乙份。商業的如果沒有原始碼的就保留乙份安裝版本。
2. 強化維護文件。有人可能說**就是文件。但是很多時候**並不能代替文件。以我的經驗,在維護乙個大型c++系統時下面幾個文件是必不可少的:
a. 介紹系統所依賴的第三方庫以及如何編譯這個系統的說明文件。
b. 介紹各個模組實現的功能以及系統的層次結構的說明文件
c. 重要介面和演算法的說明文件
3. 採用makefile檔案來構建命令列統一編譯整個工程應該是乙個好方法。工程多了我感覺命令列編譯更為便捷(特別利於新手)。
略談老系統原始碼如何維護
最近編譯公司的乙個老系統的c 原始碼 主要是想把乙個功能摘出來 該系統由乙個主呼叫工程和幾十個dll工程組成。結果是編譯編得我要 最後是把主呼叫工程編出來了,執行時還有問題,逐一檢查後才解決了。後來我歸納的主要原因是 我只是稍微熟悉這個系統的架構,但大部分的原始碼工程並不熟悉,所依賴的第三方庫也不了...
用diff和patch維護原始碼。
diff和patch是linux標配的工具。在windows上,也有移植的版本可以使用。使用中注意 1 2 使用方法 可以對單個檔案或者整個目錄樹進行處理。以最實用的方式舉例 diff nur dir old dir new dir.patch patch p0 dir.patch 注意 patch...
app分發系統原始碼 農場系統APP原始碼開發平台
農場系統模式介紹 2020具價值的專案推廣,擁有21代佣金,可以做到月入十萬不是夢 農場目前擁有蘋果和香蕉兩種果類,蘋果一元乙個 會員購買蘋果,會員每天固定賺3 每晚12點後系統自動派發 香蕉十元乙個 會員購買香蕉,會員每天固定賺4 農場系統獎勵制度 農場系統目前分為普通會員,普通會員中有不同的佣金...