三次法則 (程序設計)
三次法則(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(英文)