如果没有" if"则在开头设置默认值或明确设置默认值。案例匹配

时间:2015-06-29 10:24:54

标签: java

我有以下代码来获取对象的名称。

public String getName(Object... manyVarsToCreateObjectName) {
  String ObjectName = defaultValue;
    if(something...) {
      ObjectName = "object1"
    } else {
      if(somethingElse...) {
      ObjectName = "object2"
    }
  } 

  return ObjectName;
 } 

如果情况影响最终对象名称,则会有很多情况,如果没有if子句匹配,则会在开头设置并返回默认值。我的问题是:

  1. 如果情况匹配,我应该在开头设置默认值还是显式设置默认值。
  2. 找到匹配后立即返回objectName,或者将其分配给值并最后返回它是否更好。

2 个答案:

答案 0 :(得分:3)

一旦发现不满足前提条件,或者我有结果,我喜欢留下一个方法,例如:

public String getName(Object... manyVarsToCreateObjectName) {
    if (!myImportedAssumption) {
        return null;    // or anything signalling invalidity (or even throw)
    }

    if (something...) {
        return "object1";
    }

    if (something else...) {
        return "object2";
    }

    // ...

    return defaultValue;
}

对我来说,这是最清晰的结构。在调试时,如果方法的其余部分发生任何其他事情,即使它很长,也不必费心。理解很简单,因为您甚至不需要else逻辑。最后,它鼓励明确的设计:该方法只做一件事,没有额外的计算或弄乱if序列确定的值。如果可能的话,我尝试使用switch代替,使用相同的提前退出样式。

答案 1 :(得分:0)

如上所述,这是代码样式首选项。就个人而言,我发现以下内容最容易阅读:

public String getName(Object... manyVarsToCreateObjectName) {
    if(something...) {
        return "object1";
    } else if(somethingElse...) {
       return "object2";
    }
    return defaultValue;
} 

这样任何读者都会立即看到匹配时返回的内容。与else { if嵌套结构相比,else if使得逻辑结构更容易理解。

相关问题