简化if-statment

use*_*169 2 java if-statement

我有一个程序,其中有几个if类似于我将要呈现给你的那个.我想知道你们是否可以帮助我以任何方式简化这个等式.我问的原因是因为在我的Notepad ++中,它继续用于443列,如果需要的话编辑真的很令人沮丧,并且随着我不断添加变量而不断变长.基本上,对于我的许多类似if语句之一的这个例子,我只是想SliderBars在一个int(rpg.StatisticPoints)等于或小于0 时尝试提高值时执行操作.我用来查找的方法如果滑块的值上升,则仅将其当前值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
}
Run Code Online (Sandbox Code Playgroud)

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

pca*_*cao 13

您当前解决方案的问题不仅仅是一个长线,是因为某人很难阅读并理解实际验证的内容.

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

例如:

private boolean isValidSomething(){

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

    return result;

}
Run Code Online (Sandbox Code Playgroud)

这样你所有的支票都集中在一个地方,而且它会更具可读性,因为你的if意志将成为:

 if(isValidSomething()) {...}
Run Code Online (Sandbox Code Playgroud)

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

如果您要验证几个有意义的不同条件,请加倍努力,并将它们分解为自己的方法.

最重要的是将这些逻辑分解为有意义的部分,例如:

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


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

....
Run Code Online (Sandbox Code Playgroud)

你的主要验证是这样的:

private boolean validCharacter() {
     boolean valid = validStatistics();
     valid &= validWill();
     ...
     return valid;
}
Run Code Online (Sandbox Code Playgroud)