Best practices on initializing datetime values while avoiding code duplication
在我的项目中,我有许多调度任务函数依赖于许多日期时间值的方便变量,例如,假设10+行如下:
1 2 3 4 | let today = moment(), yesterday = moment().subtract(1, 'days'), startOfToday = moment(today).startOf("day"), endOfToday = moment(today).endOf("day"); |
我不能把这种初始化代码放在mycode.js文件的顶部,因为它会导致一个bug——mycode.js中的函数将引用过时的日期时间。例如,今天将始终引用节点服务器启动的日期时间。
目前,我正在初始化每个函数中的日期,但这会导致代码重复。
有更干净的方法吗?
我正在考虑的选项:
a)创建一个初始化所有常用日期的函数,并在函数顶部调用该函数。
b)内联moment.js日期时间值,并完全去掉方便变量(有效,但使代码更难读取)。
感谢小费,
谢谢,
- S. Arora
这样做的一种方法是创建一个包含所有这些方便方法的
由于您的输出总是日期,因此您可以使用一个接受字符串的
1 2 | getDate('yesterday') getDate('endOfToday') |
这样,您就可以很容易地阅读您要做的事情,在这个utils模块中,您可以简单地使用一个switch语句,它基于您返回正确日期输出的字符串:
1 2 3 4 5 6 7 | switch(dateString) { case 'today': return moment() case 'yesterday': return moment().subtract(1, 'days') ... } |
如果您不喜欢传递
您还可以创建一个singleton类,其中包含这些类并使用它…主要的想法是有一个方法来返回你的日期…工厂模式。