我想知道是否为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