2012-06-23 30 views

回答

5

當然不是進入圖片是動作的數量1 - 至少在「哦,我在這個控制器中有超過50個動作,讓我們開始另一個動作」的意義上。

準則2應該是:控制器是對相同類型對象進行操作的邏輯組(對於同一類型的型號可能是更好的定義)。如果碰巧你有一個功能如此豐富的模型,以至於有30個獨立的動作可以在它上面執行,請繼續並將它們放在同一個控制器中。

在硬幣的另一面:如果你有簡單的模型,並且你發現自己編寫的控制器只有幾個動作,這應該是對應用程序可維護性感覺良好的理由,而不是擔心的理由。


注:

¹當然,有很多動作控制器是可能的代碼濫用紅旗所以數量應該考慮的 - 只是不爲某種硬規則。

²這確實是一個指導方針 - 這裏的目標是建立一個可維護的系統,而不是遵循一些宗教經文。 「

+0

」控制器是對相同類型的對象進行操作的操作的邏輯組(同一類型的模型可能是更好的定義)「。這聽起來像1控制器1實體? – Elisabeth

+0

@Elisa:聽起來是這樣,但也有可能是實體之間的關係如此密切以至於它們確實屬於同一個控制器。 – Jon

+0

是什麼讓2個實體如此關閉以致它們進入同一個控制器? – Elisabeth

5

應確定何時創建新控制器的主要因素是其執行的邏輯/功能。你要確保你separate concerns

public class ProfileController { } 

public class MainController { } 

public class AccountController { } 

public class ShoppingCartController { } 

先前的每個控制器都用於協調它們相應的域名服務/模型及其視圖之間的通信。

2

作爲一般的經驗法則,我保留所有操作儘可能簡單,如果它們變大或變得太多,我會看到是否可以創建輔助函數。

如果需要,我爲每個DB實體都有一個控制器。

因此,例如,我想有一個用戶控制器,車控制器,控制器項目等等等等

我不認爲有任何特定的規則。它只是保持所有邏輯。如果它對你來說合乎邏輯,那麼通常情況下所有這一切都很重要,除非你在一個團隊中,那麼它對每個人都是合乎邏輯的。

希望這會有所幫助。

相關問題