这就是一个 34760 Star 的 Javascript 库该有的表现?

2017-12-20 10:31:07 +08:00
 lihongjie0209

var now = moment()
undefined
var startOfMonth = now.startOf("month")
undefined
startOfMonth
u {_isAMomentObject: true, _isUTC: false, _locale: l, _d: Fri Dec 01 2017 00:00:00 GMT+0800 (China Standard Time), _z: null}
var endOfMonth = now.endOf("month")
undefined
endOfMonth
u {_isAMomentObject: true, _isUTC: false, _locale: l, _d: Sun Dec 31 2017 23:59:59 GMT+0800 (China Standard Time), _z: null}
startOfMonth
u {_isAMomentObject: true, _isUTC: false, _locale: l, _d: Sun Dec 31 2017 23:59:59 GMT+0800 (China Standard Time), _z: null}
now
u {_isAMomentObject: true, _isUTC: false, _locale: l, _d: Sun Dec 31 2017 23:59:59 GMT+0800 (China Standard Time), _z: null}
11064 次点击
所在节点    问与答
108 条回复
k9982874
2017-12-20 13:26:21 +08:00
@FrankFang128 inArray 这个我觉得没问题。
你理解为『值是否在数组中存在』理应返回 bool,是中文语言逻辑。
实际上是『查询值在数组中的位置』,按英语习惯没问题。
如果想达到你的要求应该实现『 hasValue 』方法。

@lihongjie0209 查询接口改了值内容是挺坑的
lihongjie0209
2017-12-20 13:28:41 +08:00
@holyghost 反人类啊
lihongjie0209
2017-12-20 13:29:19 +08:00
@suikator 本来不想加附言, 感觉 v2 水平能看懂, 失算
icyalala
2017-12-20 13:50:48 +08:00
"违反了 CQS 原则"。。唉。。
ipwx
2017-12-20 14:04:59 +08:00
我看了楼主贴的调试日志,好久才看懂楼主在说啥。

其实我赞同楼主的观点,返回值该是 immutable 的。但是楼主你干嘛偏要用奇怪的术语,CQS 原则是啥?没听过。另外楼主你先用自然语言描述一下问题不行吗。
otakustay
2017-12-20 14:09:16 +08:00
moment 的 API 确实不好(主要是 immutable,以及一堆没意思的字符串参数),但这是历史问题,Java 也有 7 也有 8,moment 都多久的库了,star 是积累出来的也同时 star 数的增长是有惯性的,如果对 Immutable 是强需求,可以用 luxon
x7395759
2017-12-20 14:13:11 +08:00
一个 34760 Star 该有的表现是由你说了算的?上来就把别人批判一番,也不看看自己做了什么贡献?
tjsdtc
2017-12-20 14:13:38 +08:00
虽然没用过 moment 但是同意楼主的观点,这样设计确实很蛋疼
chairuosen
2017-12-20 14:18:46 +08:00
有返回值就不应该有副作用,有副作用就不该有返回值。YES
lihongjie0209
2017-12-20 14:36:40 +08:00
@x7395759 #47 我说了不算, 所以我把 github issue 贴上了, 还把维护者的博客也贴上了.
lihongjie0209
2017-12-20 14:38:11 +08:00
@ipwx #45 command query separation, 命令与查询分离.
lihongjie0209
2017-12-20 14:38:50 +08:00
@tjsdtc #48 反人类
ORZRRR
2017-12-20 14:39:43 +08:00
😀摸楼主🐶头!
baiyi
2017-12-20 14:50:24 +08:00
@k9982874 #41 似乎解释的有点强行,毕竟我用过的 PHP 的 in_array 与 python list 的 in 都是 bool 的

PHP : http://php.net/manual/zh/function.in-array.php

python : https://docs.python.org/2/reference/expressions.html#in
LokiSharp
2017-12-20 15:09:26 +08:00
也不说下有啥问题。。。
Shy07
2017-12-20 15:10:30 +08:00
这个坑我也遇到过,后来都是用原生 Date 记录当前时间,然后生成 moment 对象再处理

我不明白 v2 现在的戾气为什么这么重,别人用代码库遇到坑心情不爽措辞有些失当,还情有可原,但那些上来不对事直接对人的,你们这样做真的好么
crysislinux
2017-12-20 15:30:09 +08:00
@Shy07 问题是楼主发的话就是找喷的,非不好好说话
k9982874
2017-12-20 15:34:55 +08:00
@baiyi 并不强行,这个全看官方,并不能上升到设计问题高度。
个人认为 JQ 的 inArray 更合理,测试接口用 isInArray 或 hasValue 更合理。
当然最后还是看官方文档。
baiyi
2017-12-20 15:40:09 +08:00
@k9982874 #58 恩,毕竟一个人一个看法,对于设计者来说是这样,对于我们使用者也是这样。

赞同“最后还是看官方文档”,不同的语言的设计者有不同的想法,还是要仔细看官方文档才能不进坑啊
kukat
2017-12-20 15:56:00 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/416195

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX