2010-08-12 47 views
2

這是與我幾分鐘前詢問的問題有關的另一個問題。如果我有一門我認爲只有一個職責,但有很多業務規則,而且班級規模很大(約4000行或更多)的班級,可以不將班級重新分爲多個班級。大類重構規則

+1

4000條線似乎不止一個責任。用一句話描述它的作用。 – 2010-08-12 23:15:25

+0

該類根據用戶設置轉換產品數據。 – user204588 2010-08-12 23:32:45

+0

有很多很多設置供用戶選擇,我必須將它們全部考慮在內。 – user204588 2010-08-12 23:35:35

回答

1

4,000行類不是很好維護。孤立地測試邏輯片段可能很難。分離它的一個更實際的理由是,如果多個程序員分成多個類,它們可以並行處理它。如果是一個班,這很難做到。

將此作爲單片怪物丟失,你會失去很多優秀的軟件質量屬性。有更好的模式可以減少其內部複雜性,即使它真的是一致的。

0

我會說「不」。 4000線太大了。

我會檢查業務規則,看他們是否暗示該類真的是複合的。特別是,如果可以將一組業務規則劃分爲合理的子集,那麼很可能每個子集都可能表明您的類需要分解爲組件,每個組件都有自己的一組業務規則,並且規則應該是在組件中分出。

我還會着眼於將業務規則重構爲更緊湊的表示形式。

+0

分手時遇到的最大問題是我所有的方法都使用相同的變量。他們不應該留在同一個班上嗎? – user204588 2010-08-12 23:34:15

+0

你想爭取如此: http://en.wikipedia.org/wiki/Law_of_Demeter – Mike 2010-08-12 23:47:30

+0

@user:他們是_all_使用_all_相同的變量?你有問題。這些變量中有多少指向其他對象?引用同一組外部對象的需要並不表示這些方法屬於一起。 – 2010-08-13 00:16:13

2

4000行太多。要麼你有500個方法,要麼你有很長的方法。我不能看到一種可以管理的方式。似乎很明顯,但我建議你先將類似的方法/變量分組在一起。例如所有的成本數據反而進入productCost類等。使用查詢方法而不是許多方法正在使用的計算字段。