[Coding好習慣]判斷狀態應避免直接使用boolean

  • 6614
  • 0
  • 2009-04-10

[Coding好習慣]判斷狀態應避免直接使用boolean

這是昨天看Code Complete2提到的一點,覺得還不錯,


是個很實用的小細節,卻又容易被忽視的概念。


如題,通常我們判斷狀態,很容易直接就出現下方的code。

{//do something...
}
else
{//do something..
}

類似這樣的判斷式就出來了。
問題來啦,為什麼書上建議不要直接這樣用?明明判斷式這樣很正常,效率又好啊...
書上的建議有兩種方式:
1.使用「列舉」來當作狀態,即使你目前只有Y/N
2.使用「function」來當作條件(書上把function翻常式,看了三頁才領會過來... :evil: )

 

原因無他,今天在你的情況下,或許狀態只有兩種,Yes/No,
萬一以後不只兩種呢?萬一以後需要一個叫做「沒有設定」的狀態呢,
你是不是到時狀態變成三種:NoSet(or Default)、Yes、No...
萬一,狀態變成四種、五種、一百種呢?
萬一現在是Yes/No,以後的判斷式要改成YesGSS/NoGSS呢?難道所有有判斷這個狀態的CODE都要改嗎?

 

所以,理想設計中,應該把這類型的狀態,使用「列舉」來方便以後維護時,
要改好改,要新增也好新增...
另一種作法是function,
也就是變成

 

{//do something..
}
else
{//do something..
}

 

如此一來,Insert這個狀態判斷就被封裝起來,把會變的封裝起來,對外面來說就是簡單好用好維護...

也可以兩種混用:

{//do something..
}
else
{//do something..
}

 

這種設計方式,對資訊隱藏很有幫助,資訊隱藏的好,就會有低耦合的特性,也會容易維護,彈性也會高一點...


blog 與課程更新內容,請前往新站位置:http://tdd.best/