最佳做法是什么?为什么?
SingleCallBack方法:
onServerResponse(boolean isSucess,Response data){
if(isSuccess){
// success
}else{
// error heandling
}
}
或 多个回调方法:
onSuccess(Response data){
}
onError(CustomException ce){
}
答案 0 :(得分:4)
从我们学到的基本概念来看,你编写的方法数量越多,维护起来就越容易,每种方法的功能也越容易理解。
答案 1 :(得分:2)
与多次回叫相比,单次回叫具有更高的圈复杂度。结果,它不太可测试。当你将真正的实现放在方法中时,这将是显而易见的。
从设计的角度来看,多次回调可以清楚地区分问题。
答案 2 :(得分:0)
与大多数输入相反,我觉得第一种方法也有其优点。假设您是facebook组主持人,并且有大约100个来自不同用户的有效帖子需要您的批准才能发布。如果你注意到,那就是“全部批准”。 fb-group-moderation-page中的按钮。这允许主持人以批量方式批准所有这些。如果我这样做,并且fb不知何故无法发布100个帖子中的10个,那么我希望它继续剩余的90个并将其发布到组的墙上。我所暗示的是类似于“部分例外”的行为。问题已经出现并需要传达给客户,但与此同时,关键性并不严重,处理应该继续。在这种情况下,有一个像
这样的入口点sum()
因此,如果将内务处理任务分为不同的方法,我们最终可能会得到看起来或多或少的辅助方法
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
{
.....
}
}
或许,两个世界中最好的就是我们所需要的。
这是有争议的,并且很乐意寻求其他人的意见。