java - 优化代码以提高清晰度和效率

标签 java optimization performance

这段代码工作正常,但我需要简化它以使其更加清晰并希望提高效率:

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.()* 方法都会返回一个 boolean 值,并且仅当返回的值为 true 时 n 才会递增。如果 n==0(当调用的每个方法都返回 false 时会发生这种情况),那么我需要调用 p.standard()

怎样才能写出更清晰、更高效的代码?我尝试使用或条件,如下所示:

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,则不会调用其他方法)。

我需要调用每个方法。

最佳答案

您没有指定是否每个方法都必须被调用,但似乎您想调用所有方法,而不管个别结果如何。因此,请使用简单的或运算符: | (不是短 电路或||)。

if (!( p.cap() | p.email() | p.isbn() | p.number() | p.phone() |
   p.price() | p.time() | p.url() | p.zip() | p.creditcard()
    )) {
        p.standard();
}

关于java - 优化代码以提高清晰度和效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11244080/

相关文章:

java - 如何使用数据库上给出的电子邮件而不是 w=on 身份验证从 firebase 发送忘记密码请求

java - 如何在 struts2 迭代器中给出超链接

c++ - 整个循环花费的时间超过其迭代总和

CLI 模式下的 PHP APC

arrays - Erlang 数组与列表

mysql联合优化

java - JVM监控char数组内存使用情况

Python:在列表中拆分字符串的优雅且节省代码的方法

python - 线性规划目标函数的微小差异使程序变得非常慢

java - 将 JSON 字符串序列化为对象