【发布时间】:2012-06-28 22:03:37
【问题描述】:
此代码运行良好,但我需要对其进行简化以更清晰并希望提高效率:
int i = 0;
if (p.cap()) n++;
if (p.creditcard()) n++;
if (p.email()) n++;
[...]
if (p.price()) n++;
if (p.url()) n++;
if (p.zip()) n++;
if (n == 0) p.standard();
正如代码所说,我需要调用多个方法(我不知道它们的数量有限)。每个 p.()* 方法都返回一个布尔值,并且只有当返回的值为 true 时,n 才会递增。如果 n==0(当调用的每个方法都返回 false 时会发生这种情况),那么我需要调用 p.standard()。
如何编写更清晰高效的代码?我尝试了 or 条件,如下所示:
if (!( p.cap() || p.email() || p.isbn() || p.number() || p.phone() ||
p.price() || p.time() || p.url() || p.zip() || p.creditcard()
)) {
p.standard();
}
但显然它不能正常工作(例如:如果 p.cap() 返回 true 则不会调用其他方法)。
我需要调用每个方法。
【问题讨论】:
-
java编译器通常会做很多优化,所以我会保留这样一段代码,而不是简短的可读性。
-
为什么说第二个例子不能正常工作呢?如果不调用其他方法,这不就是你期待的优化吗?
-
@OtavioMacedo 它不能正常工作,因为我还需要调用其他方法。
-
如果您想迁移,只需标记并要求模组进行迁移。请不要交叉发布。
标签: java optimization performance