我有一箇舊的代碼需要被帶回生活,它採用約10-15布爾值,圍繞整個班級跳舞吧,像這樣:什麼是替代使用多種布爾開關
if (condition)
{
bool1 = true
}
if (condition)
{
bool2 = true
}
...
然後
if (bool1 == true && bool2 == true && bool3 == false)
{
do something
}
else if (bool1 == true && bool2 == false && bool3 == false)
{
do something
}
...
這樣可以避免編碼嗎?有更好的方法來實現這個嗎?也許利用地圖?
我想提高可讀性和整體性能,因爲這段代碼長度超過1000行。
反饋增加更多具體的例子後:
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...
1.'bool1 == true' - >'bool1' 2.壓縮取決於一組條件。 –
取決於所有布爾值的目的是什麼。請記住,編寫代碼與向未來的開發人員/維護人員溝通是一樣的,因爲這是爲了告訴計算機要做什麼。如果這些布爾人在程序所要做的事情上有明確的含義,那麼只要改變他們的名字來明確這些含義。如果你的代碼在重構後更有意義,那麼重構。 –
我會建議使用名字很好的方法,所以你從名字中看到這些條件實際上意味着什麼,評估你的「條件」,並用它們代替這些'bool1''bool2' ......這些方式你可以封裝這個邏輯,避免使用全局變量並使代碼更具可讀性 –