2015-10-13 74 views
1

什麼是最佳實踐和原因?Java設計:哪種方法好

SingleCallBack方法:

onServerResponse(boolean isSucess,Response data){ 
    if(isSuccess){ 
     // success 
    }else{ 
     // error heandling 
    } 
} 

多回調方法:

onSuccess(Response data){ 
} 

onError(CustomException ce){ 
} 
+2

顯然是第二個。 –

+0

具體原因是什麼? – eager

+0

顯然是第二個。首先,第一種情況是「CustomException」在哪裏? –

回答

2

與多次回叫相比,單回叫具有更高的圈複雜度。結果,它是不太可測的。當你將真正的實現放在方法中時,這一點將會很明顯。

從設計角度來看,多個回調顯然是分開的。

4

從基本概念我們所瞭解到的情況是,更多的一些方法你寫的,它將更易於維護,更易於理解每種方法的功能。

+0

關於這個的任何好文章?它是否有任何設計模式? – eager

+1

http://programmers.stackexchange.com/questions/133404/what-is-the-ideal-length-of-a-method – Rehman

0

與大多數投入相反,我覺得第一種方法也有其優點。假設您是Facebook羣組版主,並且有大約100個來自不同用戶的有效帖子需要您的批准發佈。如果您注意到,fb-group-moderation-page中有一個「批准全部」按鈕。這允許主持人以批量方式批准所有這些文件。如果我這樣做,並且fb無法在100個帖子中發佈10個帖子,那麼我希望它能夠繼續使用剩下的90個帖子,並將其發佈到羣組的牆上。我暗示的是「部分例外」。一個問題已經出現,需要傳達給客戶,但同時,關鍵性並不嚴重,處理應該繼續下去。在這種情況下,有若內務任務分成不同方法的單一入口點狀

onServerResponse(boolean isSucess, CustomException ex, Response data) 
{ 
    if(ex instanceof CustomPartialException) 
    { 
     // Let the processing continue, but let the error population and report process be triggered as well. 
    } 
    else 
    { 
    ..... 
    } 
} 

那麼,我們就可以結束了,看起來多少有點像

processSuccess(Response data){ 
} 

processError(CustomException ce){ 
} 

因此,或許輔助方法,兩全其美是我們所需要的。

這是開放辯論,並希望就此尋求別人的意見。