簡體   English   中英

實例類中的 C# 靜態構造函數——優點和缺點

[英]C# static constructor in instance class -- Pros & Contras

我在實例類中使用靜態構造函數來使用一些資源常量來初始化這個類。 我更有經驗的同事評論說,它是糟糕的 C# 風格,就像代碼中的任何靜態一樣。 他的意見更可靠的是外部公共只讀類。

但是,VisualStudio C# 在公共資源的第一個地址處提供內部靜態構造函數的運行,而不是外部類,我應該從更高的程序級別調用。 它不是額外錯誤的來源嗎? 我對這個邏輯正確嗎?

你問的問題是關於編碼風格的。 有些人更喜歡使用靜態,有些人更喜歡避免使用它。

靜態可能非常有用,並且有一些功能依賴於靜態。 例如 Main、Class Extension、Singleton 模式。

我在自己的代碼中大量使用了靜態,因為它使很多事情變得簡單(您不必擔心構建共享的東西)。 然而,當我開始做單元測試時,我越來越覺得不舒服。 根據定義,靜態數據將創建一次並共享,這意味着對於單元測試,這些數據將由測試共享。 它使測試獨立性變得更加困難,迫使您手動重置設置/拆卸方法中的所有內容。

簡而言之,出於單元測試和模塊化的目的,我不鼓勵您對不是不可變的數據使用靜態構造函數(或者至少您將其用作不可變 -> 只讀訪問)。 不可變數據不是問題,因為在程序(或測試)運行時它不會被更改,並且您始終可以對其價值充滿信心。

同樣,這是某種編碼風格,有些人會不同意,這很好(只要他們知道為什么他們更喜歡另一種風格)

暫無
暫無

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

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