如果我有一個類似的代碼塊用於許多功能不同,但包含返回語句的地方,我如何重構它以使此塊變成函數?例如,假設我有一個對象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(「在途」)? –