天天看點

C++類設計的一些心得

      前段時間一直在重構遊戲裡面的幫戰系統,在重構的過程中幾次都放到了外網去測試,結果出了很多問題,死鎖一次,漏鎖一次(導緻coredump)。也正是在這次重構的過程中發現了如何設計健壯的類。

1:  整個的幫戰系統主要是有兩個類,一個玩家類leaguebattler,一個戰場類leaguebattlefield,分别記錄各自的資訊;之前的同僚在注入進入戰場邏輯、玩家被打死的邏輯等過程中,随意讓玩家執行個體通路戰場類,我們看下面的例子。

玩家進入幫戰的處理邏輯,玩家在進入戰場時,應該将對應幫派的參戰人數加一。

類似上面例子很多,玩家的進入或者死亡需要更新戰場資訊的時候,我之前的程式員居然直接去修改幫派戰場資訊的資料,就是在類似上述的一個函數中造成了當機。

2:  後來我們對整個設計進行了重構,重構之後第二個例子變成了這個樣子。

 這樣就避開了兩個類之間的互相通路對方資料。類設計的一個原則就是對自己資源的絕對控制,不能被随意通路,一方面是容易維護、另一反面就是不會出現coredump的問題。

 不會出現諸如由于漏鎖引起的coredump等問題。

繼續閱讀