我有以下代码来获取对象的名称。
public String getName(Object... manyVarsToCreateObjectName) {
String ObjectName = defaultValue;
if(something...) {
ObjectName = "object1"
} else {
if(somethingElse...) {
ObjectName = "object2"
}
}
return ObjectName;
}
如果情况影响最终对象名称,则会有很多情况,如果没有if子句匹配,则会在开头设置并返回默认值。我的问题是:
答案 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使得逻辑结构更容易理解。