我的同事告訴我要在單獨的項目中分離我的控制器,以使單元測試儘可能簡單,並且他還告訴我要爲控制器項目和測試項目創建解決方案,以避免在進行單元測試時加載整個應用程序。在新項目中分離控制器是一種好方法嗎?在新項目中分開控制器?這是一個很好的設計嗎?
回答
我不確定這個問題是否有簡單的是或否的答案。我認爲你的項目必須非常非常大,才能對你的單元測試產生影響。我的個人觀點是將控制器與視圖和視圖模型一起留在Web項目中。不過,我很樂意將模型轉移到單獨的項目中。我這樣做的原因與簡單的單元測試有關,而是在其他應用程序中重用數據訪問(模型)。
在我看來,你應該總是至少控制器從您的視圖項目(通常是我的一個web項目)分開,因爲這個想法是,控制器應能與各種視圖中使用(也許以後你決定例如,將它們用於Windows窗體項目)。它使命名空間也更清潔一些。
起初這看起來不錯。在中間創建一個預覽圖層,並讓您的MVC項目只包含視圖,使其成爲一個真正的UI項目。另一方面,您可能會失去對視圖的工具支持。由於您必須忽略所有警告,因此您必須確保所有視圖都存在,並強制鍵入您的對象。
我不明白,在您的測試套件引用你的MVC項目的問題,因爲你可能會在MVC命名空間帶來反正。
從我的角度來看,讓你搬出控制器到一個單獨的項目有兩個需要考慮的事情,如果你這樣做的話,就強制你去思考如何解決低耦合和精確的低耦合類問題可以比緊耦合類更容易被測試。
另一方面,將控制器放置在與視圖相同的項目中是有邏輯的,因爲控制器通常知道視圖。
如果你想重用的可能有一些值得商榷的,因爲這裏經常控制器「膠水」的組件,這意味着,有很多在他們的佈線。
我同意你的看法,我認爲有很多工作需要專門將它們連接到視圖中。我是MVC的新手,對我來說,使用這種技術製作一個好的架構非常混亂。 – user335160 2012-04-24 03:37:28
你用什麼框架btw? – 2012-04-24 03:41:54
4.0,我正在使用MVC 3. – user335160 2012-04-24 03:43:53
- 1. 這是一個很好的數據庫設計嗎?
- 2. 這是一個很好的面向對象設計嗎?
- 3. 這是一個很好的數據庫設計實踐嗎?
- 4. 這是一個好的設計嗎?
- 5. Hadoop是一個很好的開源項目嗎?
- 6. 這個開源項目的一些很好的文檔'solr-uima'
- 7. Ruby on Rails:設計 - 將用戶控制器與設計分開是否不好?
- 8. 這是Web用戶控制的好設計嗎?
- 9. Java設計問題:這是一個好設計嗎?
- 10. 這是一個很好的設計Scala API的返回類型模式嗎?
- 11. 這是一個很好的得分方式嗎?
- 12. 這是一個很好的蟒蛇設計?
- 13. 這是很好的XML嗎?
- 14. 什麼是一個很好的開源django項目來學習?
- 15. 這個設計有很好的可用性嗎?
- 16. 這是一個很好的設計在C#中創建線程安全類?
- 17. 這是目標c中最好的設計模式嗎?
- 18. SQL中的單行表:這是一個很好的實現嗎?
- 19. 這是JavaScript中的一個很好的變量名嗎?
- 20. 這是一個好主意的數據驗證設計嗎?
- 21. 這是一個很好的集中DVCS工作流程嗎?
- 22. Django數據庫設計 - 這是一個很好的覆蓋默認設置
- 23. 這是一個管理我的視圖控制器堆棧的好方法嗎?
- 24. 這是一個很好的實現gameloop
- 25. 這是一個很好的PATCH格局
- 26. PhpUnit是一個很好的習慣嗎?
- 27. 這是Singleton模式的一個很好的用法嗎?
- 28. 這是裝飾者模式的一個很好的用法嗎?
- 29. WebApp + Ionic for Mobile的Bootstrap。這是一個很好的組合嗎?
- 30. 這是Redis的一個很好的用例嗎?
Kad81,其實這也是我在想什麼,我在網上搜索來獲得如何做到這一個教程,但我失敗了,也有一些,但它是很難理解。我希望你能寄給我一些關於這種方法的鏈接。 :) – user335160 2012-04-24 03:43:12
我看到你正在使用ASP.NET MVC ...對不起,我實際上沒有太多使用該特定框架的經驗。我同意很好的例子很難得到。在這種情況下,我的一般建議是考慮應用程序的大小以及組件(如控制器)的可用性。如果它可能是一個相當小的,自包含的網絡系統,那麼它放在哪裏可能沒有太大的區別。你以後也可以隨時移動東西(儘管有時會伴隨一些痛苦)。 – kad81 2012-04-24 04:17:32
是的,的確如此。 – user335160 2012-04-24 05:42:56