|
1
8
对不起,逻辑错误 向当局申诉 这里,但这很有趣: 约翰·卡马克曾说过:
资料来源: John Carmack's .plan posts from 1998 (scribd) (我一直觉得这句话非常有趣,因为只有一个主要的极客才会说,如果你觉得某件事不对,你应该很难想到它,直到它看起来对为止。) 因此,这里有一个想法: 将时间视为输入。 它可能不包含在构成web服务请求的xml中(无论如何您都不希望它包含在内),但在将xml转换为实际请求对象的处理程序中,获取当前时间并将其作为请求对象的一部分。 因此,在处理事务的过程中,当请求对象在系统中传递时,总是可以找到被认为是“当前时间”的时间 在请求中 。所以,现在不再是“当前时间”,而是 请求时间 。(事实上,它将是相同的,或非常接近相同的,这是完全无关的。) 这样,测试也变得更加容易:您不必模拟时间提供程序接口,时间总是在输入参数中。 此外,通过这种方式,其他有趣的事情也变得可能,例如,在与 真实的 当前时刻。想想可能性。(这里有一张鲍勃·方肩峰和彩虹的照片。) |
|
|
2
4
嗯,这感觉是一个更好的问题 CodeReview.SE 比 StackOverflow ,但肯定-我会咬的。
如果在您描述的场景中正确使用,这种方法是合理的。它实现了两个既定目标:
是的,看 Mike's answer .
你也可以考虑
Noda Time
通过
|
|
|
3
2
代码看起来很合理。 缺点-对象的最有可能的生存期将由DI容器控制,因此提供程序的用户无法确保它始终正确配置(每次调用,而不是像app/sington那样更长的生存期)。 如果您有表示“事务”的类型,那么最好将“开始”时间放在那里。 |
|
|
4
0
这不是可以用实时时钟、查询或测试来回答的。开发人员可能已经找到了一些难以理解的方法来实现底层库调用。。。 所以不要这样做。依赖注入也不会拯救你;问题是,在“会话”开始时,您需要一个标准的时间模式
在我看来,最根本的问题是你在表达一个想法,并为此寻找一种机制。正确的机制是命名它,说出名称中的意思,然后只设置一次。
|
|
|
Jake · 如何回滚臭鼬事务以进行集成测试?(缺少隐式原点) 1 年前 |
|
|
Riyaz Vagapov · EF核心交易 2 年前 |
|
|
M. Kemp · Oracle删除操作将永远存在 3 年前 |
|
Kuldeep · 我们什么时候应该在数据库中进行交易? 3 年前 |