k4s*_*k4s 0 java theory java-8
我有一个旧的代码需要重新使用,它利用了大约10到15个布尔值,这些布尔值在整个类中都跳舞,就像这样:
if (condition)
{
bool1 = true
}
if (condition)
{
bool2 = true
}
...
Run Code Online (Sandbox Code Playgroud)
然后
if (bool1 == true && bool2 == true && bool3 == false)
{
do something
}
else if (bool1 == true && bool2 == false && bool3 == false)
{
do something
}
...
Run Code Online (Sandbox Code Playgroud)
是否可以避免这种编码方式?有更好的方法来实现这一点吗?也许利用地图?
我想提高可读性和整体性能,因为这段代码长于1,000s行。
反馈后添加更多具体示例:
boolean bool1 = false, bool2 = false, bool3 = false, bool4 = false, bool5 = false,
bool6 = false, bool7 = false, bool8 = false, bool9 = false, bool10 = false;
if (string_object.startsWith("Pattern1"))
{
bool1 = true
}
if (string_object.startsWith("Pattern2")
{
bool2 = true
}
if (string_object.startsWith("Pattern3")
{
bool3 = true
}
if (string_object.startsWith("Pattern4")
{
bool4 = true
}
if (string_object.startsWith("Pattern5")
{
bool5 = true
}
// and so on...
if (system_type.equals("type1"))
{
if (bool1 == true && bool2 == true && bool3 == false)
{
system_value.set("value1")
}
else if (bool1 == true && bool2 == false && bool3 == false)
{
system_value.set("value2")
}
else if (bool1 == true && bool3 == false && bool4 == true)
{
system_value.set("value3")
}
}
else if (system_type.equals("type2"))
{
if (bool1 == true && bool2 == true && bool4 == true)
{
system_value.set("value1")
}
else if (bool1 == true && bool3 == false && bool5 == true)
{
system_value.set("value4")
}
else if (bool1 == true && bool3 == false && bool4 == true)
{
system_value.set("value5")
}
}
// and so on...
Run Code Online (Sandbox Code Playgroud)
您可以做几件事。
正如其他人提到的那样,代码如下:
if(condition){bool1 = true; }
可以压缩为:
bool1 = (condition);
Run Code Online (Sandbox Code Playgroud)
例如,更改此内容:
if (bool1 == true && bool2 == true && bool3 == false)
{
do something
}
else if (bool1 == true && bool2 == false && bool3 == false)
{
do something
}
Run Code Online (Sandbox Code Playgroud)
对于这样的事情:
if (firstCondition())
{
do something
}
else if (secondCondition())
{
do something
}
private boolean firstCondition() {
return (bool1 && bool2 && !bool3 );
}
private boolean secondCondition() {
return (bool1 && !bool2 && !bool3);
}
Run Code Online (Sandbox Code Playgroud)
像这样分解复杂的条件使您的代码更易于阅读和维护。
| 归档时间: |
|
| 查看次数: |
679 次 |
| 最近记录: |