三次法則 (程式設計)

三次法則(rule of three)是代碼重構的一條經驗法則,涉及到當代碼片段出現重複時,如何決定是否用一個新的子程式替代之的標準。三次法則的要求是,允許按需直接複製貼上代碼一次,但如果相同的代碼片段重複出現三次以上的時候,將其提取出來做成一個子程式就勢在必行。馬丁·福勒在《重構》一書中介紹了三次法則[1],並認為這一法則是Don Roberts所提出。[2]

在編程中,由於會提高代碼維護的難度,直接複製代碼段的習慣並不好;具體來說,當有代碼片段需要變更時,代碼維護者就必須找出程式中所有與之相同的代碼片段,並都進行修改,但這一過程易出差錯,而且也常會帶來許多麻煩。相對的,如果代碼只在一個地方出現,修改起來就容易多了。

這一法則在代碼量(即行數)較少(甚至只有一行)的時候還有另一種形式的應用,例如:如果你想呼叫一個函數,並在呼叫失敗的時候再嘗試呼叫一次,那使用兩處呼叫亦可;但若你想在放棄嘗試前至少嘗試5次(注意,這裏的5符合>=3的要求),那就應該將其寫成迴圈形式,使代碼中只有一個呼叫位置英語Call site

誠如Charles Petzold英語Charles Petzold所言,

參見

編輯

參考

編輯
  1. ^ 《重構:改善既有代碼的設計》(Refactoring: Improving the Design of Existing Code), 馬丁·福勒著, ISBN 978-0201485677
  2. ^ Refactoring Patterns: 第一部分[永久失效連結], IBM DeveloperWorks(中文)
  3. ^ Page Transitions in Windows Phone 7, Charles Petzold(英文)
  4. ^ Does Visual Studio Rot the Mind?, Charles Petzold(英文)