何為集中決策?先看一段代碼:
class P1
{
public:
int m_nVal;
};
class P2
{
public:
int m_nVal;
};
int fun(const P1& aP1,const P2& aP2)
{
if(aP1.m_nVal<60)
{
if(aP2.m_nVal<60)
{
return 0;
}
else if(aP2.m_nVal==60)
{
return 1;
}
else if(aP2.m_nVal>60)
{
return 2;
}
}
else if(aP1.m_nVal==60)
{
if(aP2.m_nVal<60)
{
return 3;
}
else if(aP2.m_nVal==60)
{
return 4;
}
else if(aP2.m_nVal>60)
{
return 5;
}
}
else if(aP1>60)
{
if(aP2.m_nVal<60)
{
return 6;
}
else if(aP2.m_nVal==60)
{
return 7;
}
else if(aP2.m_nVal>60)
{
return 8;
}
}
return -1;
}
上面的代碼的if-else是兩層,還不算多,實際工程中還有更多層的。如果經常用C寫程序的朋友類似代碼應該經常寫。
這段代碼的問題在於,if-else的判斷全部集中到上面的函數中,這種集中決策對於小的程序當然問題不大,但是如果將幾十個類甚至幾百個類的決策都集中過來,可想而知,上面這個 fun 函數代碼一定異常復雜,復雜到最後沒有人能控制。這種寫法我稱為“集中決策”。
摘自 acloudhuang的專欄