我正在導入產品,因此我有一個產品導入類。它有大約4000行,所以我想分解它。我已經開始分解它,但是我很難決定什麼是班級,什麼不應該。我認爲我所有的方法都使用了三個相同的實例變量,所以如果我將這些方法分開,我會將這些實例變量傳遞給構造函數中的每個單獨的類。我開始打破這種局面的一種方式是通過查看處理相同類型產品數據的一組方法。例如,一些方法與產品描述一起工作,一些方法與產品類別一起工作,所以我開始將它們分成單獨的類,但是接着有人告訴我,如果這些不同的類都使用相同的三個實例變量,它們可能應該合併成一個類。那麼,我該怎麼做?我真的不瞭解正確的課程設計,只是把它們分開,因爲很難在大班上找到代碼。重構大類
如果這裏的問題丟失了,有什麼提示可以重新分析一個大類。是我在上面提出的一個好的解決方案,我應該重新分解一個類,其中所有的方法使用相同的三個實例變量。
這個應用程序是一個asp.net應用程序,它從一個系統A的數據庫獲取產品數據,並根據用戶可以選擇的大量設置和配置將產品數據保存到系統B的數據庫。例如....
public class ProductImporter
{
ProductA productA;
ProductB productB;
ImportSettings settings;
public void GetProductADescription()
{
//look at the settings and add productB description to productA
productA.Desc = productB.Desc;
//....
}
//.... tons of methods that all deal with product moving one product to the other
public void AddProduct()
{
//go through all the settings
productA.Save();
}
}
我沒有看到問題點;你可以做一些opp設計並重寫你的代碼,或者用分裂代碼做opp設計。 – Svisstack 2010-08-12 22:37:19
也許這三個實例變量應該是它們自己的類(類似於current_state),它被其他類傳遞和操縱?很難說,當你沒有描述他們的目的時,但這種可能性聽起來並不是太牽強。 – 2010-08-12 22:38:17