有时我会偶然发现类似于以下示例的代码(此函数的确切作用超出了此问题的范围):
function doSomething(value) {
if (check1(value)) {
return -1;
}
else if (check2(value)) {
return value;
}
else {
return false;
}
}
正如你所看到的,if
,else if
和else
语句与配合使用return
的语句。对于一个偶然的观察者来说,这似乎很直观,但是我认为(从软件开发人员的角度来看)删除else
-s并简化这样的代码会更加优雅:
function doSomething(value) {
if (check1(value)) {
return -1;
}
if (check2(value)) {
return value;
}
return false;
}
这是有道理的,因为return
语句后的所有内容(在相同范围内)将永远不会执行,从而使上面的代码在语义上与第一个示例相同。
以上哪一项更符合良好的编码习惯?两种方法在代码可读性方面都有缺点吗?
编辑:重复的建议已被提出,该问题仅供参考。我认为我的问题涉及另一个主题,因为我并不是要避免像另一个问题中那样重复陈述。这两个问题都试图减少重复,尽管方式略有不同。
-1
是一个数字,false
是一个布尔值,value
在此未指定,因此它可以是任何类型的对象。
value
实际上是一个整数。如果可以的话,那就更糟了。
else
是一个较小的问题,更大的问题是您显然从单个函数中返回了两种数据类型,这使函数的API无法预测。