天天看點

遊戲伺服器開發中的一點值得注意的地方

     一年前一直是做c++遊戲伺服器的開發工作,後來被接手了一個java的伺服器,也就開始寫java了,本來就沒有什麼基礎,就趕緊買來了基本java的程式設計書,《java 程式設計思想》,《effective java》等等。在effective java中有一條就是"傳回0長度的數組,而不是null"。那麼我們就借助一段代碼來談談這一條。

      我們将這一條擴充一下,就是傳回0長度的容器,而不是null;

      我們還可以再擴充一下,就是傳遞0長度的容器,而不是null;

      這個容器可以是java中的list或者map;

      我們看下下面的代碼:

  如果我們傳遞0長度的容器,而不是null;則代碼可以:

   對于傳回長度為0的容器,在這裡還是列舉一下書中給出的例子:

     如果我們在原則下面程式設計,則紅色标注的代碼則可以省略掉。

      那麼這個原則适用于c++嗎?我們看下我之前犯過的一個錯誤。

  if語句,就是防止 player_scene_map為null,引起當機。但是c++可以傳回長度為0的容器嗎?

  我們看下find_player_scene_map函數的定義:

 如果為null的時候,傳回長度為0的playerscenemap,這樣子這段記憶體由誰來維護變成為一個很大的問題。

     在這方面java的記憶體管理确實有優勢。如果是c++的話,除了小心程式設計之外,不知道還有沒有更好的辦法!