我的項目包含很多類,其中一些可以用XML文件來描述。別擔心,這不是XML中的邏輯或實現。這是一個遊戲,一個例子是遊戲磁貼可以用XML,圖像文件,動畫幀等來定義。我應該爲此創建一個單獨的類嗎?
我將最終得到一堆看起來像這樣的函數:
public static Foo FromXml(ref XmlTextReader reader) { ... }
問題是這樣的:應這些功能被包含在自身的匹配的類,對於上面的一個例子是Foo.FromXml。或者,我應該爲閱讀文件做一個單獨的課程嗎?這裏似乎有兩個通用的指導原則:
- 一個班級應該知道關於一件事的一切 - 本身。
- 一個類應該只有一個理由要改變。
首先,我不太瞭解第二個,因爲「原因」很模糊。第一條指南建議將每位讀者放入相關的課程中。第二種說法是讓一個類專門用於讀取xml文件。但是利弊是有爭議的。一方面,每個類可以包含自己的閱讀器,所以不會引用十幾個類。另一方面,每個類都必須包含System.Xml,如果我更改了我的xml格式,事情可能會在多個文件中更改(但我認爲這並不算太糟糕)。
我知道最重要的規則是「用你的大腦」,沒有像「正確的」解決方案那樣的東西,只有一個好的工作的解決方案。那麼你認爲更可讀性更好,還是更好,可維護?
編輯:澄清,類可以完全不相關。由於它是一種遊戲,因此可以是精靈動畫類,可以定義敵人的行爲,也可以定義地圖佈局或屬性。所以繼承與此無關。
考慮一種設計,其中方法不是靜態的,而且它們不使用參數參數。參考文獻往往是代碼氣味(你爲什麼要修改參考?)和靜態方法將呼叫者緊密地耦合到該類。 – TrueWill 2009-12-03 04:37:14