我想知道是否爲SelectList設置默認值被認爲是表示邏輯或業務邏輯?例如,如果要求員工無法在沒有位置的情況下保存,但99%的時間將選擇的位置是特定項目 - 比如說亞特蘭大。因此,當顯示新員工的輸入屏幕時,SelectList應該默認爲亞特蘭大。我應該默認在模型中還是在視圖模型中的位置?有一兩件事,我意識到的是,單元測試變得尷尬,因爲在這兩種情況下,我不得不再次進行測試,將永遠是目前在生產中的位置,但我不能創建一個單元測試用我自己的測試數據,除非「亞特蘭大」號在測試中使用的一組位置中。如果您對此有任何想法,我會非常感激。設置默認值 - 表示邏輯或業務邏輯?
7
A
回答
4
與許多這樣的問題(主觀)一樣,答案是:「這取決於」。
如果「默認值」是一個商業默認值(比方說,一個企業位置的默認位置,或組的訂單,或諸如此類的默認號碼),這可能是業務層。這對你在這裏的具體情況似乎是正確的。但是,如果列表的「默認值」僅僅是因爲您需要一些值作爲默認值,而您只是選擇索引0,或者只是根據用戶的位置或系統進行選擇設置,我想這些會是表現層問題。
0
我還以爲默認值是業務邏輯。
例如,如果公司搬遷的默認位置不再是「Altanta」或「倫敦」,但「紐約」或「諾丁漢」。
3
因此,當顯示新員工的輸入屏幕時,位置SelectList應默認爲Location5。我應該默認在模型中還是在視圖模型中的位置?
這是您的示例中的業務邏輯,但這並不會阻止您在此情況下擁有您的蛋糕並進食它。該模型可以指定一個默認值;視圖然後用這個默認值初始化它自己。
一般來說,東西是否是「商業邏輯」或「表示邏輯」取決於它是否涉及域或沒有。例如,將日期下拉的最早的一年設置爲1900年,可能是一個關於演示的問題。但它也可能是一個企業的關注,如果系統沒有設計更早接受日期比1900年
一兩件事,我意識到的是,單元測試變得尷尬,因爲在這兩種情況下,我會強迫測試將始終存在於生產中的位置,但我不能用我自己的測試數據創建單元測試,除非在測試中使用的位置集合中包含「亞特蘭大」。如果您對此有任何想法,我會非常感激。
隨着我上面提到的策略,單元測試是容易的。簡單地驗證:
- 模型提供一個默認值
- 認爲接受此默認值
- 視圖初始化自己這個默認值
- 視圖有相應的行爲是否屬於模型耗材價值
0
如果您確實擔心保留業務規則和表示層的邊界,您可以通過業務邏輯提供默認值,並且表示層可以使用該默認值來初始化控件。
相關問題
- 1. 演示邏輯或業務邏輯?
- 2. 業務邏輯
- 3. 該代碼是業務邏輯還是表示邏輯?
- 4. 業務邏輯層設計
- 5. 業務邏輯設計
- 6. 業務邏輯exception.example
- 7. 域邏輯和業務邏輯
- 8. 問題分離,業務邏輯與表示邏輯
- 9. ASP.NET業務邏輯
- 10. PHP:分離業務邏輯和表達邏輯,值得嗎?
- 11. 業務邏輯類
- 12. 使用DBML設置業務邏輯層
- 13. 業務邏輯和服務
- 14. 業務邏輯不是在表示層
- 15. 業務邏輯+ ASP.NET MVC
- 16. 在Jsp或業務邏輯中排序?
- 17. Java EE:使用bean將表示邏輯與業務邏輯分離
- 18. MVC業務邏輯幫手
- 19. 分離業務邏輯
- 20. 業務邏輯分離
- 21. Django中的業務邏輯
- 22. SQL業務邏輯通緝
- 23. EF6和業務邏輯層
- 24. MVVM和業務邏輯層
- 25. WCF業務邏輯處理
- 26. Netty中的業務邏輯?
- 27. 重用java業務邏輯
- 28. 業務邏輯類命名
- 29. 同步的業務邏輯
- 30. UI VS業務邏輯MVC
如果默認值在我的員工模型中,那麼我是不是必須硬編碼默認位置的名稱。 例如 私人位置的位置; 公共地點{ 得到 { 如果(位置== NULL) 位置=新的位置(1, 「亞特蘭大」,...) 回報位置; } set {location = value; } 這是可以接受的嗎? – SideFX 2010-06-18 19:23:48
我可以使用註冊表模式來協調我對硬編碼默認值的事實。但在這種情況下的位置不是參考數據,因爲用戶可以添加新的數據。 – SideFX 2010-06-18 19:25:43