一年前一直是做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++的話,除了小心程式設計之外,不知道還有沒有更好的辦法!