簡體   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