java - 简化 if 语句

标签 java if-statement

我有一个程序,其中有一些 if 语句,与我将要向您展示的程序类似。我想知道你们是否可以帮助我以任何方式简化这个方程。我之所以问这个问题,是因为在我的 Notepad++ 中,它持续了 443 列,如果需要的话进行编辑真的很令人沮丧,而且随着我不断添加变量,它会变得越来越长。基本上,对于我的许多类似 if 语句之一的示例,我只想在我的任何 SliderBars 尝试在 发生时提高值时执行操作int (rpg.StatisticPoints) 等于或小于 0。我用来确定 slider 值是否上升的方法是将其当前值与与 slider 关联的 int,并检查结果是否为正。

if (rpg.StatisticPoints <= 0 && 
((rpg.WillSlider.getValue() - rpg.Will) < 0) &&
((rpg.PerceptionSlider.getValue() - rpg.Perception) < 0) && 
((rpg.StrengthSlider.getValue() - rpg.Strength) < 0) && 
((rpg.DexteritySlider.getValue() - rpg.Dexterity) < 0) && 
((rpg.ConstitutionSlider.getValue() - rpg.Constitution) < 0) && 
((rpg.CharismaSlider.getValue() - rpg.Charisma) < 0) && 
((rpg.IntelligenceSlider.getValue() - rpg.Intelligence) < 0))
{
//Do actions
}

我知道这里有很多你不熟悉的变量,因为你没有看到我的完整代码,但我的完整源代码有 100 行长,我的问题只是基于逻辑,而不是真正的问题与语法。

最佳答案

当前解决方案的问题不仅仅是一行很长,还在于人们很难阅读和理解实际正在验证的内容。

您可以创建一个辅助方法来构建该验证的 boolean 值,同时为其提供一个辅助方法,而不是使用 if 语句中的所有条件一个有意义的名字。

例如:

private boolean isValidSomething(){

    boolean result = firstCondition;
    result &= secondCondition;
    ...

    return result;

}

这样您的所有检查将集中在一个地方,并且可读性会提高很多,因为您的 if 将变为:

 if(isValidSomething()) {...}

当然,请使用在您的应用程序中有意义的名称创建该方法。

如果您正在验证几个有意义的不同条件,请多加努力并将它们分解到自己的方法中。

最主要的是将逻辑分解为在一起有意义的部分,例如:

private boolean validStatistics() {
     return statistics > 0;
}


private boolean validWill() {
     return will > 0;
}

....

您的主要验证将类似于:

private boolean validCharacter() {
     boolean valid = validStatistics();
     valid &= validWill();
     ...
     return valid;
}

关于java - 简化 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16669590/

相关文章:

java - 将 JMenu ButtonGroups 与 JToolbar ButtonGroups 同步

java - Mysql 更新了太多行

javascript - 帮助 if 语句 - 最少 3 个字符

C 中的编译器错误 - ELSE 语句后的 ‘;’ 标记之前应有 ‘{’

matlab - 提取元胞数组中某个字符的索引

java - Netbeans 不会部署到 Tomcat

java - 文件未找到异常 : for properties file in Spring Boot application deployed in Tomcat

java - Google 集合框架中最常用的类是什么?

r - 使用 ifelse 为 R 中的新数据框列赋值

iphone - #ifdef 检查设备是否是 iPhone 5