java – 返回這裡有什麼問題?
在我工作的公司,我有一個描述我們應該遵循Java的良好做法的文件.其中一個是避免返回此類的方法,例如:
class Properties { public Properties add(String k, String v) { //store (k,v) somewhere return this; } }
我會有一個這樣的課程,以便我能寫:
properties.add("name", "john").add("role","swd"). ...
我已經看到這樣的成語很多次,像在StringBuilder中,並沒有發現任何錯誤.
他們的論證是:
… can be the source of synchronization problems or failed expectations about the states of target objects.
我不能想到一個這樣可能是真實的情況,你們能給我一個例子嗎?
編輯該文件沒有指定任何可變性,所以我沒有看到連結通話和做的不同之處:
properties.add("name", "john"); properties.add("role", "swd");
我會嘗試與發起者聯絡,但是我想用載入的槍支這樣做,這就是為什麼我釋出了這個問題.
解決:我要和其中一位作者交談,他的初衷是顯然是為了避免釋出尚未準備就緒的物件,就像在Builder模式中一樣,並解釋說如果呼叫之間發生上下文切換,那麼物件可能在無效狀態.我認為這與返回這無關,因為你可能會犯同樣的錯誤,一個接一個地呼叫這些方法,並且與正確同步建築過程有關.他承認檔案可能更加明確,並將儘快修改.勝利是我/我們的!