最近玩《星露穀物語》上癮,本來是看著個休閑游戲,現在玩成修仙游戲了,上百個小時渾身是肝,中午午休習慣都強行給改了。 雖然挺有意思,但是太肝了,入坑前請謹慎。補充一下,這個游戲應該是基於 XNA/MonoGame 寫的。 這個游戲在喪失焦點的時候會自動暫停,無法自動推進,我覺得效率太低了,為了齊先生的 ...
1、利用面向對象的原則,將我們面對的功能拆分出相關對象
2、相同功能只應出現在一個類中。
3、相似功能儘量提取其公共部分
總的目標簡單來說就是:精減代碼量。
我們以一個動態條件查詢界面來說明一下上面幾點
這是一個病案查詢功能,左則的列表是所有可供選擇的欄位,中間是用戶要求查詢的欄位,右側的某一個查詢欄位的條件。
組織這個界面功能要用到哪幾個類呢?
結果不是唯一的,每個人都可以有自己的想法。但我認為,組織一個更多人容易理解的方式應該是我們的目標。
首先浮現我們腦子的,應該是兩個對象:所有的欄位、欄位查詢範圍
研究一下所有欄位的規則,更多時候應該跟客戶面對面的聊。我們發現部分欄位使用相同的查詢範圍錄入界面。
所以這裡似乎隱藏了一個欄位類型。就是某一類的欄位的行為是一致的,界面錄入、條件生成等行為是一致的。
欄位查詢範圍、欄位類型都很容易讓人想到這兩個是欄位的屬性,而不是構造主要元素的功能對象。
是的,從名字來看就很容易讓人迷惑。但如果我將名字換成“查詢範圍”、“行為控制器”,你可能會明白我的用意。
三個對象:欄位、查詢範圍、行為控制器
左側顯示就是所有“欄位”,中午顯示的是所有的“查詢範圍”,行為控制器必然是一個介面,讓主程式可以優雅的處理所有類型的欄位。
上圖是中間查詢範圍選中事件的代碼,這個主程式就能應對N種欄位的顯示。
本文只發佈在博客園,未經同意請勿轉載!