簡體   English   中英

如何抽象一個靜態類

[英]How to abstract a static classes

我有一個靜態課程。 我可以對其進行修改,並使其擴展interface \\ abstract類。

它包含

  • 很多readonly和consts成員。
  • 靜態方法。

為了使此代碼可測試,我想

  1. 分別交給DTO和經理。
  2. 抽象每個。 但是,由於類是靜態的,該怎么辦?

我認為靜態類有兩點好處:

  1. 提供全局函數/算法(不應該依賴狀態-亦稱純函數)
  2. 保存全球數據

如果在其中對方法進行建模以使它們純凈,則可以立即對其進行測試。 另一方面,全局數據(您的常量和只讀成員)不需要是testet,因為它們應該通過所述方法生成。

因此,如果您的靜態方法使用類中的全局數據,只需對其進行重構,以將這些數據作為參數包含到方法中,則可以使用簡單的包裝器為您的全局數據提供重載,並測試新的(現在是純函數)函數。 注意將諸如數據庫數據或系統時間(DateTime.Now)之類的內容以及類似的副作用數據也包含到您的方法中。

如果參數列表變得很大,則將方法重構為一個類,其中某些/大多數參數封裝在新的類字段中-始終記住SOLID中的S(單一職責)-僅將所有內容整理為“ MyStaticGlobals”類/ singelton如果您分開測試零件。

一種選擇是將使用的靜態類轉換為常規類。 在您的主應用程序中,您添加了一個單例,以便在任何地方都可以使用同一實例,因此單調有效地將一個實例轉換為全局實例。 但是在測試中,您可以按需創建實例。

暫無
暫無

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

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