改善C 公共程式類庫質量的10種方法

2021-09-06 10:28:15 字數 2386 閱讀 8608

最近重構一套**,運用以下幾種方法,供參考。

1  公共方法盡可能的使用快取

public

static list getregisteredcompany()

這個方法返回的值,可能會被多個地方用到。應該把這個方法的值快取起來,供程式多次使用。

2  使用narrange格式化**,這個工具,可以將**格式化,用region分隔開來。

經過格式化之後,如上圖所示,被分成幾個區域,看起來條理更清晰。

3  查詢重複的**,提取到公共方法庫中。

關於查詢程式中重複的**,有如下工具可以檢測重複的**

5)  resharper  find similar code 查詢相似的**

工具相當多,如果使用vs2012開發,已經內建此功能。

4 增加測試**,測試各種情況下公共**的功能是否正確。

[testmethod]

public

void emplicensetestmethod()

}

visual studio內建的test工具與技術,再配合resharper的工具,測試乙個方法相當容易實現。

5  應用改善效率的**替換不合適的**,或是應用.net框架的方法重寫自定義的方法。

效率改善**,如下舉例

1  不要用string ax=」」 判斷ax是否為空, ax.length==0的效率高於ax==string.emptyu 一般用as.isnullorempty

2  對於不改變的變數,用常量代替

3  用linq代替大量的foreach查詢

4  mytype t=(mytype) t和t as mytype的效率比較,後者效率好,而且轉換失敗後不會丟擲異常

5  list代替array ,haset,dictionary代替hashtable

.net的內建的方法,string.join可以將字串陣列連線成由乙個分隔符號連線的乙個字串。比如

如果 separator 為 nullnothingnullptrnull 引用(在 visual basic 中為 nothing),則改用空字串 (empty)。

這個方法,我們常常自己實現。應該改用.net內建的方法。

6  使用並行技術改善系統效率

parallel.foreach可以充分利用多核的,提供系統效能。對於一些不需要考慮對資料的前後順序操作的地方,均可以用這個方法改善。比如刪除臨時檔案。對於需要考慮操作順序的資料,比如清空資料表資料,要先清除子表,再刪除主表,否則會引起外來鍵衝突。應當用lock鎖定要刪除的資料表,提取出資料後,再進行刪除。

7  使用linq和lambda表示式改善系統的寫法

對於只有幾行的方法,可以用lambda來替代。如果方法很通用,可以寫成通用的方法。對datatable的迴圈遍歷操作,首選linq技術,可減少出錯的機率,也使**簡化。

8 字串操作

簡單的操作不改變,複雜的匹配與查詢改用正規表示式,同時要考慮encoding的問題。

9 公共方法的提取與擴充套件方法

static型別的公共方法如果過多,因為gc無法**記憶體,會影響系統的效率。可以考慮用擴充套件方法替代,編譯時直接被替換為原始型別的靜態方法呼叫。一般新增擴充套件方法的型別為.net系統型別,自定義的型別新增擴充套件方法很少。

10  盡量多的給方法注釋

使用vsdocman工具,盡可能的為公共方法書寫注釋,新增用例

改善c 程式建議 重中之重的類(四)

size medium b 建議55 地方物件切片 b size 1 定義 c 記憶體模型規定,如果出現繼承結構,記憶體分布一定是先基類部分的資料,後派生類部分的資料。在派生類向基類對映的過程中,派生類的物件中基類部分的資料會被強行 切 掉。2 注意 多型的事先必須依靠指向同一類族的指標或是引用。否...

改善C 程式的50種方法 讀後小記

譯者 dsqiu c 有兩種常量 編譯時常量和執行時常量。你可以使用 readonly 關鍵字宣告執行時常量,使用 const 關鍵字宣告編譯器常量。執行時常量的值是在執行時得到的。當你引用乙個唯讀 read only 常量,il 會引用乙個 readonly 變數而不是直接使用值。相比 reado...

10種簡單的數字濾波演算法 C語言源程式

1 限幅濾波法 又稱程式判斷濾波法 a 方法 根據經驗判斷,確定兩次取樣允許的最大偏差值 設為a 每次檢測到新值時判斷 如果本次值與上次值之差 a,則本次值有效 如果本次值與上次值之差 a,則本次值無效,放棄本次值,用上次值代替本次值 b 優點 能有效克服因偶然因素引起的脈衝干擾 c 缺點 無法抑制...