繁体   English   中英

在Java中使用两种不同的返回类型重构复制

[英]Refactoring duplication with two different return types in java

假设我所有的控制器中都有以下代码行:

public View ControllerClass() {
    // ...
    // some code in controller
    SomeClass someClass;
    try {
        someClass = Util.getParam(
                context.getEncryptedParam(), soemthignElse.getSomething());
    } catch (SomeException ex) {
        log.error(ex);
        return viewBuilderFactory.view1.view();
    } catch (AnotherException ex) {
        return viewBuilderFactory.view2.view();
    } catch (etc ...) {}

    // use someClass
    // ...
    return viewBuilderFactory.view3.view(); 
}

在这种情况下,如果我想将重复项移到其自己的方法中,则将有两种不同的返回类型( voidview )。 这里有什么好的方法?

最好将代码重组如下:

public View ControllerClass() {
    ViewBuilderFactoryView viewBuilderFactoryView;
    try {
        SomeClass someClass = Util.getParam(
            context.getEncryptedParam(), soemthignElse.getSomething());
        // use someClass
        // ...
        viewBuilderFactoryView = viewBuilderFactory.view3; 
    } catch (SomeException ex) {
        log.error(ex);
        viewBuilderFactoryView = viewBuilderFactory.view1;
    } catch (AnotherException ex) {
        viewBuilderFactoryView = viewBuilderFactory.view2;
    } catch (etc ...) {}

    return viewBuilderFactoryView.view(); 
}

换句话说,如果您成功获取SomeClass ,请继续使用它,然后返回一些View 如果未成功获取SomeClass ,则只需返回一些View

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM