C#入門:如何合理制定方法參數-下

在上一篇中:https://www.cnblogs.com/kevin-Y/p/17792071.html

我們將程序組成爲三個主要對象:字段、查詢範圍、行爲控制器。

字段、查詢範圍都是數據,都分別對應一個類,有各自屬性,並能保存和讀取

行爲控制器則是一個接口,有N種實現類,每一種類型的字段就有一種實現類

   public interface IFieldController
   {
       /// <summary>
       /// 處理的字段類型
       /// </summary>
       string HandleType { get; }
       /// <summary>
       /// 獲取查詢範圍編輯器
       /// </summary>
       /// <param name="field"></param>
       /// <param name="condition"></param>
       /// <returns></returns>
       Control BuildFieldEditor(FieldItem field, string condition);
       /// <summary>
       /// 讀取查詢範圍
       /// </summary>
       /// <param name="ctrol"></param>
       /// <returns></returns>
       ConditionItem ReadCondition(Control ctrol);
       /// <summary>
       /// 生成where條件
       /// </summary>
       /// <param name="build"></param>
       /// <param name="field"></param>
       /// <param name="condition"></param>
       void BuildWhere(SqlBuilder build, FieldItem field, string condition);
   }

在我們劃分好主要對象後,上面方法及其基本上可以確定下來。爲什麼這麼說呢?如果我不能確定該如何做呢?我以這個例子說明我們以何爲依據。

1。主程序不需要清楚有多少種類型的字段,只需要工廠方法告訴其控制類是誰

2。所有與類型有關的東西,主程序也不會理會,所以接口出入參只會是主程序知道的某一些基類或接口。
如BuildFieldEditor方法的入參condition,使用了基本的字符串作爲所有查詢範圍的描述載體。顯示的界面需要自己解釋這個文本再給界面各個控件賦值。
爲什麼使用string,而不使用object呢?主要是確保能讓主程序保存到本地文件中。

3。方法入參不會一下子就能明確下來的。可能需要完成第一個、二個控制器才能基本確定。
如BuildWhere方法的入參SqlBuilder build,一開始我想使用一個StringBuilder就行了。但做完第一個Int類型的控制器、準備做第二個String類型時,
發現幾乎所有代碼都一樣。於是將這些代碼組織了一個工具類SqlBuilder。大家可以將入參調整爲StringBuilder試試。

4。類似功能、或相關功能應放在一個類中。如讀、寫應該在一個類;序列化和反序列化也應該在一個類。

5。在上線前要勇於調整方案,力求代碼精減、職責清晰(重點:如果不知道對面對象的單一職責原則,請搜索學習一下

點擊下載相關代碼

 

本文只發布在博客園,未經同意請勿轉載!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章