我有一个程序,其中有几个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)