1. 程式人生 > >打造可高效維護代碼的幾個原則

打造可高效維護代碼的幾個原則

模式 mgr 抽象 order 3.1 pri 大腦 結構 保持

來源:http://blog.csdn.net/lezhiyong

1 問題

1.1 project

功能越來越多,邏輯越來越復雜。模塊越來越混亂、架構越來越復雜

常見問題:

1、模塊A發消息給其它模塊處理。B模塊-》轉發消息給C-》轉發給D-》轉發給A

2、初始頭文件功能定義清晰,越到後面裏面東西越混亂。

3、各模塊內反復實現基礎功能。

1.2 個人開發

1、對前人代碼:

不能理解前人代碼的思想,新功能自成一套體系。

造成大量反復代碼和反復變量。造成命名反復、沖突的函數、類與變量。

案例1:兩個iStartRecorder,僅參數不一樣。

技術分享

技術分享

兩個iStartRecorder,僅參數不一樣,但一個表示啟動錄制編碼器。一個表示啟動錄制server,依據兩個函數編寫時間,非常明顯這是後者不理解前人Recorder的含義而加入上的代碼。後把後者命名調整為iStartRecordService:

技術分享技術分享

案例2:

對於下面的一個project:

技術分享技術分享

以****Impl.cpp標誌的類。一個是繼承****類或者是****的創建者,本案例中須要從類實例化過程中非常easy體會到RssMgrlmpl、RssManager、CrssImpl之間的組合/聚合關系。

RssMgrlmpl:繼承rmManager,是接受到sip信令的實現,是RssManager的創建者。

RssManager:錄制任務的管理者

CRssImpl:是CRssAvRecorderMgr的創建者。

CRssAvRecorderMgr:是任務中ReCorder的管理者

當須要創建新類的時候盡量保持與前人思想一致。(無優劣之分時按加入的代碼量少數服從多數)

2、對自己代碼:

忌不遵從當前project所用的架構,使用自己熟悉的其它方式。

1、使用通用軟件規範和模式設計思想。

2、對有自己想法和創新的代碼做好標註,以便別人理解。

案例:

慎用遞歸架構 (遞歸函數)

一個視頻窗體中實現雙流視頻(標準流+低流),原來已經實現標準流

Class VideoCell//單路標準視頻處理邏輯

{

Public:

//視頻流接收函數

Private:

////標準流變量

}

Class WinVideoCell//windows視頻窗體

{

Public:

//windows對視頻窗體的操作方法

Private:

VideoCell m_videoCell;

}

Class WinVideoLayout//視頻面板

{

WinVideoCell m_arrWinCell[25];

}

遞歸方式實現:

Class VideoCell//視頻窗體

{

Public:

//標準流方法

Private:

//標準流變量

VideoCellm_LowFlowCell;

}

弊端:VideoCell的類函數調用假設控制不好,將陷入VideoCell函數遞歸調用的迷魂陣

標準實現方式:

Class WinVideoCell //windows視頻窗體

{

Public:

//windows對視頻窗體的操作方法

Private:

VideoCell m_videoCell;

VideoCellm_LowFlowCell;

}

3、其它常見問題:

數據都以 void * 形式傳遞。然後再造型為合適的結構

Switch 裏邊還有 Switch,這樣的嵌套方式是人類大腦難以破解的

2 幾個原則

2.1 唯一性原則

1、庫函數:僅僅在一個類中使用

2、相同的功能僅僅使用一個接口對外提供功能。

3、僅僅要是反復的東西盡量合並

同樣特征抽象成基類

同樣方法抽象成虛基類或同樣接口

同樣邏輯抽象成同樣函數

2.2 一致性原則

1、不同模塊中的語言與風格、信令結構、宏定義方式

2、分配和釋放資源的結構一致:在同一代碼結構層面上使用,同一個類中提供。同一個各cpp全局函數中提供。

2.3 對稱性原則

1、 命名對稱start-stop。init-uninit。

函數位置對稱

2、project結構對稱,了解一個project結構。其它project結構類似。

3、

3 怎樣做到

3.1 個人要求

1、對自己代碼:持續開發,持續改進

2、對別人代碼:從全局的角度理解前人代碼思想,未了解前保持現狀

3、別人到自己:規範的傳承

3.2 project要求

1、 頭文件看護,架構頭文件,專人看管,提交審核

2、 定期檢視與整改,將走錯門的代碼又一次歸隊,將違規的代碼糾正

3、 新人了解項目結構和頭文件


打造可高效維護代碼的幾個原則