如果我有一个类似的代码块用于许多功能不同,但包含返回语句的地方,我如何重构它以使此块变成函数?例如,假设我有一个对象Mailman
,其中包含一个有效性代码(成功/失败/失败的原因),也可能是一个给被调用者的包。如何制作一个包含返回语句的代码块?
在一种情况下,邮递员可能只是抓住他的项目多数民众赞成举行,它给被叫方:
Mailman mailman = requestMailForPerson(person);
switch(mailman.getStatus()){
case SUCCESS:
Mail mail = (Mail)mailman.getHeldItem();
return Response.ok().entity(mail).build();
case PERSON_DOESNT_EXIST:
return Response.status(Response.status.BAD_REQUEST).build();
case MAIL_SERVICE_FAILED_SOMEWHERE:
return Response.status(Response.status.INTERNAL_SERVER_ERROR).build();
}
但在另一种他可能会重新路由信
Mailman mailman = rerouteLetterForPerson(letter, person);
switch(mailman.getStatus()){
case SUCCESS:
Letter letter = (Letter)mailman.getHeldItem();
if(distance(letter.address, currentLocation) > 50){
sendToNextoffice(letter);
return Response.ok.entity("in transit").build();
}else{
return Response.ok().entity(letter).build();
}
case PERSON_DOESNT_EXIST:
return Response.status(Response.status.BAD_REQUEST).build();
case MAIL_SERVICE_FAILED_SOMEWHERE:
return Response.status(Response.status.INTERNAL_SERVER_ERROR).build();
}
只是有块的代码看起来非常相似,我想在某处展开这种逻辑,但处理不同的成功/失败场景给我一个很难的时间。
是否有一些'()'缺少'响应ok'后'。 ok.entity(“在途”)? –