2015-10-13 84 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){ 
} 

因此,或许辅助方法,两全其美是我们所需要的。

这是开放辩论,并希望就此寻求别人的意见。