首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重构这个有多个if/else语句的方法

如何重构这个有多个if/else语句的方法
EN

Stack Overflow用户
提问于 2012-07-28 23:04:23
回答 3查看 3.9K关注 0票数 5

我有一种感觉,这个if/else应该被重构,但我不确定我能做什么,或者我是否应该让它就这样……

代码语言:javascript
复制
private String someReportUrl(HttpServletRequest request, HttpServletResponse response) {
    String url;
    if (isBackToReportsSummary(request)) {
        url = SUMMARY_PAGE;
        getReportsSummary(request, response);
    } else if (isComingFromPageA(request)) {
        url = getTabUrl(request, REPORT_URL_FOR_PAGE_A);
    }
    else {
        url = "/standAlone/reportUrl.jsp";
    }
    return url;
}

基本上,我有一个报告摘要页面,其中列出了三到四个报告。第一个条件是当用户想要返回该页面时,第二个条件是当用户选择了该特定报表时,第三个条件是当用户选择该报表作为独立报表(而不是从摘要页面)时。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-28 23:09:12

如果您确实想要更改它,您可以将url初始化为默认返回,并且仅在满足以下两个条件之一时才更改它:

代码语言:javascript
复制
private String someReportUrl(HttpServletRequest request, HttpServletResponse response) {
    String url = "/standAlone/reportUrl.jsp";
    if (isBackToReportsSummary(request)) {
        url = SUMMARY_PAGE;
        getReportsSummary(request, response);
    } else if (isComingFromPageA(request)) {
        url = getTabUrl(request, REPORT_URL_FOR_PAGE_A);
    }
    return url;
}

但实际上,这是很好的。

票数 5
EN

Stack Overflow用户

发布于 2012-07-28 23:11:24

这种“基于守卫”的风格怎么样?它通常使方法从上到下更容易阅读。

代码语言:javascript
复制
private String someReportUrl(HttpServletRequest request, HttpServletResponse response) {
    if (isBackToReportsSummary(request)) {
        getReportsSummary(request, response);
        return SUMMARY_PAGE;
    } 
    if (isComingFromPageA(request)) {
        return getTabUrl(request, REPORT_URL_FOR_PAGE_A);
    }
    return "/standAlone/reportUrl.jsp";
}
票数 5
EN

Stack Overflow用户

发布于 2012-07-28 23:38:14

你的代码就是这样的。但是,如果您想在一行中实现相同的功能,您也可以考虑使用?:operator。

下面是一个例子:

代码语言:javascript
复制
class round{
    public static void main(String args[]){

    int sampleInt=3;
    if(sampleInt==1){
        sampleInt = 5;
        System.out.println("One");
    }
    else if(sampleInt==2){
    sampleInt = 3;
        System.out.println("Two");
    }
    else{
        sampleInt = 4;
        System.out.println("Else");
    }

    sampleInt = sampleInt==1?5:(sampleInt==2?3:4);
    System.out.println("sampleInt "+sampleInt);
}
}

最后,您的代码将如下所示:

代码语言:javascript
复制
   url = isBackToReportsSummary(request)==true?SUMMARY_PAGE:(isComingFromPageA(request)==true?getTabUrl(request, REPORT_URL_FOR_PAGE_A):"/standAlone/reportUrl.jsp");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11702121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档