2011-03-24 43 views
0

在設計/添加類中的新功能時,您遵循哪些設計指導原則?該指南可以從命名約定,功能大小,輸入參數,輸出參數等不同而變化。.net功能的設計指南

此問題特別針對.net環境,但同樣適用於其他編程環境。

+2

這是一個非常廣泛的問題。答案需要一整本書。這裏是這本書:http://msdn.microsoft.com/en-us/library/ms229042.aspx。 – 2011-03-24 05:34:58

+0

@John:我同意答案需要整本書,並且已經有深入討論這個話題的書。 Bob叔叔的「Clean Code」在這個問題上得到了廣泛的報道。然而,它總是很好,並有助於總結和總結這些事情,並對其進行非常簡短的描述。 – 2011-03-24 05:44:39

回答

1

當遇到多種環境時,設計約定和指導方針的語言和平臺將付出巨大的努力。根據我的經驗,最好堅持供應商或社區的標準。這樣做的原因:

  1. 較少的工作
  2. 新的團隊成員可以很容易地把它撿起來;它應該是熟悉已經
  3. 未來增加的語言/環境可能會很容易添加

所以查找從供應商和社區的標準,並添加未指定的東西(大部分時間就像命名不影響接口的局部變量)

0

我嘗試按照爲我添加到一個類中的任何新功能,遵循以下原則:

  • 函數名稱應遵循Pascal命名約定。
  • 功能名稱應該顯示它的功能 - 無需查看代碼。如果你試圖理解一段代碼,那麼函數名應該確切地說明它做了什麼,並且不應該有任何需要去查看該函數的代碼。
  • 函數應該做一件事(單一責任原則)並且做正確的事情。
  • 功能應儘可能小。
  • 函數名稱應該是動詞。它不應該包含班級的名字。對於例如User.Authenticate比User.AuthenticateUser更好。
  • 非靜態函數應該改變對象的狀態或返回一個對象的狀態,但不是兩者。如果這個函數兼有,它會變得混亂,並且經常無法正確命名。
  • 函數輸入應該是一個更合適的更一般化的基本類型。
  • 函數返回值應該是一個更適合的更專用派生類型。
  • 函數應該通過使用Debug.Assert來記錄函數邏輯前後的任何假設(如果有的話)。
  • 類中的公共函數應該依賴於順序。如果函數需要某個對象的某個狀態,那麼它應該向消費者拋出一個適當的異常。
  • 公共函數應檢查提供的輸入是否有效。如果輸入無效,它應該拋出一個適當的異常。 .net中有異常類用於相同的目的:ArgumentNullException,ArgumentOutOfRangeException,ArgumentException等。查看是否已經有一個異常類在創建定製類之前服務於此目的。
  • 公共函數應該有xml註釋文檔:目的,輸入參數,輸出,函數引發特殊考慮等有關函數的異常。
  • 私人函數不應檢查輸入的有效性,因爲它們是從類中調用的。
  • 不訪問對象狀態的私有函數應聲明爲靜態。
  • 函數應該通過以'base'爲前綴來訪問任何基類成員。對於例如base.ToString()應該用於調用基類方法。