首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在避免代码重复的同时初始化日期时间值的最佳实践

在避免代码重复的同时初始化日期时间值的最佳实践
EN

Stack Overflow用户
提问于 2018-10-05 17:06:46
回答 1查看 34关注 0票数 0

在我的项目中,有许多调度任务函数依赖于日期时间值的许多方便变量,例如想象10 +行如下:

代码语言:javascript
复制
let today = moment(),
  yesterday = moment().subtract(1, 'days'),
  startOfToday = moment(today).startOf("day"),
  endOfToday = moment(today).endOf("day");

我不能将这种初始化代码放在myCode.js文件的顶部,因为它会导致错误-- myCode.js中的函数将引用陈旧的日期时间。例如,今天总是指节点服务器启动的日期时间。

目前,我正在每个函数中初始化日期,但这会导致代码重复。

有更干净的方法吗?

我正在考虑的选择:

( a)创建一个函数,该函数初始化所有常用日期,并在函数顶部调用该日期。

( b)内联moment.js日期时间值,并完全消除方便变量(工作,但使代码更难阅读)。

小贴士很感激,

谢谢,

-S。阿罗拉

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-05 17:56:09

要做到这一点,一种方法是创建一个util模块,其中包含所有这些方便的方法,然后您可以导入需要它们的任何文件。

由于输出总是日期,所以可以有一个接受字符串的getDate方法:

代码语言:javascript
复制
getDate('yesterday')
getDate('endOfToday')

这样,您想要做的事情就很容易读了,在这个utils模块中,您可以简单地拥有一个开关语句,它基于字符串返回正确的日期输出:

代码语言:javascript
复制
switch(dateString) {
  case 'today':
     return moment()
  case 'yesterday':
     return moment().subtract(1, 'days')
...
}

如果您不喜欢传递strings (尽管这是非常重要的时刻),您可以创建一个ES6中的冻结类来模拟枚举并传递/处理它。

您还可以创建一个有这些的单例类,并使用它.主要思想是有一个方法来返回日期. 工厂模式

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

https://stackoverflow.com/questions/52670369

复制
相关文章

相似问题

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