程式設計三次法則

程式設計中的三次法則是代碼重構的一條經驗法則,涉及到當代碼片段出現重複時,如何決定是否用一個新的子程式替代之的標準。

簡介

程式設計中的三次法則(Three rules of programming)是代碼重構的一條經驗法則,涉及到當代碼片段出現重複時,如何決定是否用一個新的子程式替代之的標準。

三次法則的要求是:

允許按需直接複製貼上代碼一次,但如果相同的代碼片段重複出現三次以上的時候,將其提取出來做成一個子程式就勢在必行。

馬丁·福勒在《重構》一書中介紹了三次法則 ,並認為這一法則是Don Roberts所提出。

原理

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

這一法則在代碼量(即行數)較少(甚至只有一行)的時候還有另一種形式的套用,例如:如果你想調用一個函式,並在調用失敗的時候再嘗試調用一次,那使用兩處調用亦可;但若你想在放棄嘗試前至少嘗試5次(注意,這裡的5匹配>=3的要求),那就應該將其寫成循環形式,使代碼中只有一個調用位置 。

C++編程中的三次法則

三次法則在C++里,它是一個以設計的基本原則而制定的定律。它的要求是,假如類有明顯定義下列其中一個成員函式,那么程式設計師必須寫入其他兩個成員函式到類內,也就是說下列三個成員函式缺一不可。

•析構函式

•複製構造函式

•賦值運算符 (C++)

上述三個函式是特別的成員函式,假如程式設計師沒有自行定義或宣告這三個函式,編譯器會自動地創建他們並且編譯到應用程式內。然而,如果程式設計師僅定義其中一個,其餘兩個函式仍然會由編譯器自動產生,這種混雜的情況非常容易產生程式設計師難以預期的錯誤。三法則的存在,正是提醒程式設計師避免那樣的陷阱。

C/C++ 原始碼三次法則示例

頭檔案header.h

主函式main.cpp

頭檔案實現 header.cpp

相關詞條

熱門詞條

聯絡我們