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