三次法則 (程式設計)
三次法則(rule of three)是代碼重構的一條經驗法則,涉及到當代碼片段出現重複時,如何決定是否用一個新的子程式替代之的標準。三次法則的要求是,允許按需直接複製貼上代碼一次,但如果相同的代碼片段重複出現三次以上的時候,將其提取出來做成一個子程式就勢在必行。馬丁·福勒在《重構》一書中介紹了三次法則[1],並認為這一法則是Don Roberts所提出。[2]
在編程中,由於會提高代碼維護的難度,直接複製代碼段的習慣並不好;具體來說,當有代碼片段需要變更時,代碼維護者就必須找出程式中所有與之相同的代碼片段,並都進行修改,但這一過程易出差錯,而且也常會帶來許多麻煩。相對的,如果代碼只在一個地方出現,修改起來就容易多了。
這一法則在代碼量(即行數)較少(甚至只有一行)的時候還有另一種形式的應用,例如:如果你想呼叫一個函式,並在呼叫失敗的時候再嘗試呼叫一次,那使用兩處呼叫亦可;但若你想在放棄嘗試前至少嘗試5次(注意,這裡的5符合>=3的要求),那就應該將其寫成迴圈形式,使代碼中只有一個呼叫位置。
誠如Charles Petzold所言,
“ | (出現)三次,又或更多?用個for(迴圈)吧!(Three or more? Use a for!)[3][4] | ” |
參見
- 一次且僅一次(物件導向程式設計)
參考
- ^ 《重構:改善既有代碼的設計》(Refactoring: Improving the Design of Existing Code), 馬丁·福勒著, ISBN 978-0201485677
- ^ Refactoring Patterns: 第一部分[永久失效連結], IBM DeveloperWorks(中文)
- ^ Page Transitions in Windows Phone 7, Charles Petzold(英文)
- ^ Does Visual Studio Rot the Mind?, Charles Petzold(英文)