如何将此代码减少到一行?
Posted
技术标签:
【中文标题】如何将此代码减少到一行?【英文标题】:How do I reduce this code to one line? 【发布时间】:2012-12-09 07:13:30 【问题描述】:我对 javascript、node.js 和 express 非常陌生。我的问题是,如何重构以下代码使其成为函数内的一行?
exports.about = function(req, res)
var mytime = new Date();
res.render('about', title: 'about page', time: mytime.toLocaleDateString() );
;
换句话说,有没有办法可以压缩 var mytime = new Date();和时间: mytime.toLocalDateString() 成一个语句?
【问题讨论】:
这里最好的:new Date().toLocaleDateString()
.
大小并不重要——可读性很重要。这是一种你想尽快摆脱的心态——相信我。
你可以使用exports.about = function(req, res) var mytime = new Date(); res.render('about', title: 'about page', time: mytime.toLocaleDateString() ); ;
,但这并没有什么意义。
VisioN 有我在这里寻找的答案。谢谢!!
【参考方案1】:
使这段代码更短不会使它变得更好。我个人会把它放大一点,像这样:
exports.about = function (req, res)
var mytime = new Date();
res.render('about',
title: 'about page',
time: mytime.toLocaleDateString()
);
;
我在function
之后添加了一个空格,因为这是 JSLint 想要的。
我在
之前添加了一个空格,因为这使它更具可读性。
我将所有对象属性放在不同的行上,这样我就不必整天水平滚动了(现在我可以在每个属性的末尾添加 cmets,耶!)。
最后我用制表符替换了空格缩进,因为这样可以使所有内容完美对齐,同时只需按一下键即可删除或越过它们(如果您的插入符号位于行首,则 4 个空格将需要 4 次按键才能移动到您的代码,而单个选项卡只需要一个按键)。
【讨论】:
【参考方案2】:我的观点是删除 mytime var 是更好的样式,因为您只是获取当前系统时间,而 new Date() 使意图非常清晰。
exports.about = function (req, res)
res.render('about',
title: 'about page',
time: new Date().toLocaleDateString()
);
;
【讨论】:
【参考方案3】:你可以,
exports.about = function(req, res)
res.render('about', title: 'about page', time: new Date().toLocaleDateString() );
;
但仅此而已。我同意 Frits van Campen 的观点。
【讨论】:
【参考方案4】:一行
exports.about = function(req, res) res.render('about', title: 'about page', time: new Date().toLocaleDateString() ); ;
虽然这很愚蠢。您的原始代码没有任何问题。
【讨论】:
【参考方案5】:见Frits' answer:可以,但真的有必要吗?就像你做的那样,它很好读。
但如果你真的,真的想要,这就是方法:
exports.about = function(req, res)
res.render('about', title: 'about page', time: new Date().toLocaleDateString() );
;
看起来有点奇怪,但 new Date()
部分优先,所以你甚至不需要在它周围加上括号(例如,你不需要 time: (new Date()).toLocaleDateString()
)。如果你愿意,你可以拥有它们,但它们不是必需的。
【讨论】:
【参考方案6】:你没有。可读性胜过简洁。让机器进行缩小。
您可以将mytime.toLocaleDateString()
写成(new Date()).toLocaleDateString()
,但我不建议这样做。
我喜欢的样式:
exports.about = function(req, res)
var mytime = new Date();
res.render('about',
title: 'about page',
time: mytime.toLocaleDateString()
);
;
【讨论】:
好的,我明白了,我可能会保持原样。但这实际上是不可能的,还是不推荐? 不需要额外的括号。 是的,我需要括号;)new
可能也不需要。
@jstevens13 “不可能”是糟糕的程序员所说的。没有什么是不可能的,这样做只是一件愚蠢的事情。
@FritsvanCampen new
在这里至关重要。以上是关于如何将此代码减少到一行?的主要内容,如果未能解决你的问题,请参考以下文章
如果内容不存在,如何将此代码更改为 INSERT 而不是 UPDATE? [复制]