簡體   English   中英

最佳實踐:默認和測試驅動開發的受保護或私有方法

[英]Best Practice: Protected or Private Methods by Default and Test-Driven Development

類似問題

我的問題

許多人同意只有當你有理由使用受保護的方法時才應該使用它們。 測試驅動開發 model 如何進入這個? (特別是關於偽造對象。)我有一個朋友是 TDD 的忠實粉絲,現在是 BDD,他是一名 C# 開發人員,他告訴我他幾乎不使用private關鍵字。 在他這么說之后,我繼續將它用於字段,但開始將我的所有方法默認為protected StackOverflow 上的一些人也同意默認情況下應該使用protected —— 你們中的一些人可以權衡一下這個問題嗎? 默認情況下使用protected的最佳理由是什么(因為上面的線程解釋了不這樣做的原因)?

編輯:根據 Oded 的評論,默認情況下使用protected和開閉原則(class 應該對擴展開放和對修改關閉)怎么樣?

以下是我認為的最佳實踐,與我的發展一起做,並向我的所有客戶提出建議:

  1. 從您的測試(或規范,如果您喜歡 BDD)開始。 從測試中提取的生產類和方法應該是公開的。
    • 注意:如果您在 .NET 中進行開發,您可能希望考慮使用internal關鍵字(並將InternalsVisibleTo程序集屬性添加到您的生產程序集,以便您的測試項目可以使用該代碼)。 然后,只有在另一個生產程序集依賴於它時,您才會將其公開
  2. 您在 TDD重構階段創建的任何方法都應設為私有
  3. 僅當派生的生產 class 需要輔助方法時才保護它們。
  4. 在重構階段創建的任何方法(現在是私有的或受保護的),您在另一個生產 class中需要的任何方法都應提取到幫助程序 class 並公開(或在.NET和任何支持該概念的語言中公開)。
  5. 如果另一個程序集需要輔助 class ,則:
    • 如果其他程序集已經依賴於幫助程序類的程序集,請將幫助程序 class公開(如果尚未公開)。
    • 如果另一個程序集依賴於助手類的程序集,則將助手 class 提取到助手程序集(最合適的或新的)並將其公開 如果還沒有,請確保使原始程序集引用新的輔助程序集。

這應該幾乎涵蓋了您的所有情況。
希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM