首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置默认值--表示逻辑还是业务逻辑?

设置默认值--表示逻辑还是业务逻辑?
EN

Stack Overflow用户
提问于 2010-06-19 02:43:28
回答 3查看 260关注 0票数 7

我想知道为SelectList设置默认值是表示逻辑还是业务逻辑?例如,如果要求在没有位置的情况下不能保存员工,但是99%的时间将选择的位置是特定的项目--比如亚特兰大。正因为如此,每当显示新员工的输入屏幕时,位置SelectList都应默认为亚特兰大。我应该默认模型中的位置还是视图模型中的位置?我意识到的一件事是,单元测试变得很笨拙,因为在这两种情况下,我都会被迫在一个始终存在于生产环境中的位置上进行测试,但我不能使用自己的测试数据创建单元测试,除非"Atlanta“在测试中使用的位置集中。如果你对此也有任何想法,我将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-19 02:51:06

对于许多这样的问题(主观的),答案是:“视情况而定。”

如果“默认值”是业务默认值(例如,业务位置的默认位置,或订单或诸如此类的默认单位数),则可能是业务层。对于您这里的特定情况,这似乎是正确的。

但是,如果列表的“默认值”仅仅是因为您需要某个值作为默认值,而您只是要选择索引0,或者只是要根据用户的位置或系统设置进行选择,我认为这些都是表示层的问题。

票数 4
EN

Stack Overflow用户

发布于 2010-06-19 02:50:00

因此,每当显示新员工的输入屏幕时,位置SelectList都应默认为Location5。我应该默认模型中的位置还是视图模型中的位置?

在您的示例中,这是业务逻辑,但这不会阻止您在此实例中拥有自己的蛋糕。模型可以指定一个缺省值;然后视图用这个缺省值初始化自己。

通常,某些东西是“业务逻辑”还是“表示逻辑”取决于它是否涉及领域。例如,将日期下拉列表中的最早年份设置为1900可能是一个表示问题。但如果系统没有设计为接受早于1900年的日期,这也可能是一个业务问题。

我意识到的一件事是,单元测试变得很笨拙,因为在这两种情况下,我都会被迫在一个始终存在于生产环境中的位置上进行测试,但我无法使用自己的测试数据创建单元测试,除非“亚特兰大”在测试中使用的位置集中。如果你对此也有任何想法,我将不胜感激。

使用我上面提到的策略,单元测试很容易。只需验证:

  • 模型提供默认值
  • 视图接受此默认值
  • 视图将自身初始化为此默认值
  • 视图具有适当的行为,无论模型是否提供该值

<>F213

票数 3
EN

Stack Overflow用户

发布于 2010-06-19 02:47:09

我会认为默认值是业务逻辑。

例如,如果公司重新定位默认位置不再是"Altanta“或"London",而是"New York”或"Nottingham“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3072287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档