1 AoEiuV020 2021-11-04 16:40:15 +08:00 ![]() 1234 感觉都没什么,普通的统一风格以及禁止一些没啥好处的炫技代码, |
![]() | 2 ztc 2021-11-04 16:49:47 +08:00 ![]() 第 4 条为什么不能用? |
![]() | 4 h1104350235 2021-11-04 17:52:35 +08:00 没啥问题阿,我觉得有代码规范和约束是好事情。 |
![]() | 5 gaoryrt 2021-11-04 17:53:13 +08:00 从我角度来看确实是为了团队着想 另,这几个 lint 也限制不了程序员发挥的,放宽心~ |
![]() | 6 shakaraka PRO ![]() 这个是团队规范,和你自个发挥创意是两回事,写出来的东西是给团队的人看的,每个人风格都不统一别人怎么接手你写的代码 |
![]() | 7 pengtdyd 2021-11-04 18:00:09 +08:00 说个笑话:阿里的开源框架不遵守阿里出的 java 开发手册 |
![]() | 8 rabbbit 2021-11-04 18:04:23 +08:00 for of 为啥不能用? |
![]() | 9 xiangyuecn 2021-11-04 18:04:41 +08:00 只要钱够多,再怎么不合理的要求都是毛毛雨啦。不然嘛,一边呆着去,否则上去就是一巴掌 |
![]() | 10 rabbbit 2021-11-04 18:04:57 +08:00 是禁止用 for in 吧? |
![]() | 11 Hoshinokozo 2021-11-04 18:13:24 +08:00 感觉没啥问题,除了禁用三目稍微严苛了点,不过 3 目确实不如直接 if else 语义清晰 |
12 SuperManNoPain 2021-11-04 18:38:14 +08:00 前端还卷? 请你来我们 java 阵营看看 |
![]() | 13 2 和 3 没啥问题,4 还能理解,1 咋了? |
![]() | 14 yuhangch 2021-11-04 18:45:44 +08:00 ![]() 同问一,那怎么遍历啊,foreach ,for in ,for of |
![]() | 15 cwp374240920 2021-11-04 18:50:49 +08:00 ![]() lint 规则,prettier 风格,跟卷不卷没有关系,一个项目中如果每个人都有自己的风格,都按照自己的创意来写代码,你写的代码别人也不想看,别人写的代码你也不想读,那跟屎山没什么区别。如果对于 lint 规则与风格有意见,可以提出来到组里面大家一起商议一下。 八股文一般指的是你前端 Vue 说说 computed 跟 watch 的区别,dom-diff 算法是怎么实现的,业务代码怎么也跟八股文沾不上边的。 StackOverflow 上面的答案,复制下来不能用,你是不是得看下别人移植过来的器官在你身体上是不是能完美运行,代码知道逻辑自己写应该会更好吧。 前端卷的定义是:下班时间到了,你跟你同事的活都干完了,但是还赖在公司假装没干完,对着电脑假惺惺的写代码;没有活干了,然后疯狂的写一些没有用的轮子来争取 kpi 。(以上只是举例子,请不要真的这么做。) 小厂还是比较自由的,跟组长关系处好了你想怎么玩都可以,前端最起码的写起代码来还是比后端要舒服自由很多的,后端代码是真的又臭又长。 |
![]() | 16 cwp374240920 2021-11-04 18:51:23 +08:00 @yuhangch [].map/forEach ? |
![]() | 17 ifreego 2021-11-04 19:04:59 +08:00 ![]() for in 会遍历原型链上的 props ,可能会有一些奇怪的 bug 举个例子 const arr = ['a','b','c']; const indexes = []; Array.prototype.each = function() {/*blah*/}; for (var index in arr) { indexes.push(index); } indexes; // ['0', '1', '2', 'each'] |
18 TomatoYuyuko 2021-11-04 19:08:30 +08:00 ![]() 不让写三目是吧,劳资直接 a = b && 1 || 2 (狗头 |
![]() | 19 molvqingtai 2021-11-04 19:17:26 +08:00 via Android 如果不是写算法,代码中从不用 for 循环,迭代函数写起来方便语意也更强, |
![]() | 20 learnshare 2021-11-04 19:21:41 +08:00 定 lint 和卷有啥关系,左舵右行影响了交通效率吗? lint 必须要有,越细致越好,合作的人越多越能发挥价值。 lint 打的就是你: >复制下来还不能直接用 lint 规则好不好,这个比较主观,不容易做评价。 但随意搬一个规则来用,甚至啪一下全部 prettier ,那肯定是不对的。 |
![]() | 21 creanme 2021-11-04 19:56:47 +08:00 @cwp374240920 forEach 性能差,感觉 map 并不适用于不需要返回新的数组的遍历。 |
![]() | 22 cwp374240920 2021-11-04 20:06:16 +08:00 ![]() @creanme foreach/map/reduce/filter/find 都有明确的使用场景啊....这是数组的原生方法啊...你写前端需要多强的性能去处理数据啊...语义性上清晰便于阅读就是最佳实践了 |
![]() | 23 Torpedo 2021-11-04 20:20:53 +08:00 这不说明还不够卷么? 这种代码风格的要求,稍微成熟的点的代码库都会要求的 |
![]() | 24 sagaxu 2021-11-04 20:21:50 +08:00 via Android 互联网有不卷的吗? |
![]() | 25 henryhu 2021-11-04 20:46:42 +08:00 其他还好,3 目运算多好,用 if else ?太丑了 |
![]() | 26 sickoo 2021-11-04 20:47:09 +08:00 这不也没啥,只是你踩得坑少 |
![]() | 27 statement 2021-11-04 20:56:07 +08:00 via iPhone 我记得大学课本上就写 要慎重使用三目。 简单的很优雅。复杂的就很不直观 |
![]() | 28 jiangshanmeta 2021-11-04 20:56:20 +08:00 开发 eslint 插件搞更严格的 lint 规则的路过 |
![]() | 29 xylitolLin 2021-11-04 21:06:36 +08:00 你这 1 、2 、3 、4 看着也没啥问题啊,多人协作还是需要一点条条框框的 |
![]() | 30 xiaoming1992 2021-11-04 22:05:42 +08:00 lint 肯定要严格啊,#18 直接通不过我的 lint: a = b && 1 || 2 (&& 和 || 不能在一起,至少要用括号括起来) p.s. 一般这种都有一键 fix 的,无法 fix 的才需要手动修改 |
![]() | 31 gauzung 2021-11-04 22:47:00 +08:00 多人协作开发肯定要 lint 但我个人感觉缩进两格有点太密。。看起来费眼睛 单个三目还好,多个三目嵌套看起来很累 |
32 kwrush 2021-11-04 23:43:08 +08:00 via iPhone 团队协作严格 linting 有好处,再不济可以 disable 嘛,和卷有什么关系呢 禁用 for 难以理解,大概是禁用 for-in ? 编辑器可以设置 tab 键为两空格 字符串模板可读性强 禁用三元是指这种吧 a?b:c?d:e |
![]() | 33 christin 2021-11-05 07:35:18 +08:00 via iPhone ![]() 学到个词就赶紧用用 |
![]() | 34 cmdOptionKana 2021-11-05 08:42:22 +08:00 球球了,网络新词知道意思就行,没必要强行使用。 |
![]() | 35 hst001 2021-11-05 08:55:44 +08:00 via Android ![]() 跟卷一点关系都没 |
36 daimubai 2021-11-05 09:07:19 +08:00 ![]() 因为你不是团队 leader ,所以你只需要管自己舒不舒服。而 leader 则是要让整个团队舒不舒服。我觉得稍微思考下就不难理解这么做的原因,不值得发帖吐槽 |
![]() | 37 zoffy 2021-11-05 09:27:11 +08:00 刚好我踩过这些坑 1. for of 限制通常源于 airbnb 的规则,社区里也很多人吐槽,我赞同这个老哥的跟帖 https://github.com/airbnb/Javascript/issues/1271#issuecomment-281716212 解决方法可以复制规则源码到自己的 eslint 配置中,删除 for of 限制 https://github.com/airbnb/Javascript/blob/1eadb93e377da1e56c3f91f26610e5d0a00738a9/packages/eslint-config-airbnb-base/rules/style.js#L339 2 、3. 不是什么问题 4. 可能说的是嵌套三目表达式,那确实应该禁止 |
38 PerFectTime 2021-11-05 09:34:06 +08:00 ![]() |
![]() | 40 Features OP |
![]() | 42 Features OP 好吧,看来大家都习惯了 自己读书的时候没人管,爱怎么写怎么写 工作了还是得按流水线的规矩来 是我太矫情了 |
43 rayaa 2021-11-05 11:25:07 +08:00 @cwp374240920 有时候白天划水摸鱼过多,然后到下班代码写不完咋办,算不算卷 XD |
![]() | 45 Originalee 2021-11-05 11:35:09 +08:00 只能 forEach 的话,for await...of 这种场景怎么办呢? |
![]() | 46 Originalee 2021-11-05 11:37:08 +08:00 另外实在不能苟同 4 ,某些场景用三目更直观吧。 |
![]() | 49 cwp374240920 2021-11-05 11:49:17 +08:00 @rayaa 看来你产品催的还不够急 |
![]() | 50 theprimone 2021-11-05 11:50:09 +08:00 这跟卷有半毛钱关系吗? lint 规则而已。。。 |
51 darknoll 2021-11-05 11:53:47 +08:00 有些秀儿确实喜欢把几个三目运算叠在一起,看的头疼,禁了也是对的 |
![]() | 52 foolnius 2021-11-05 11:56:09 +08:00 for(const value of array.values(){} 也不行? |
![]() | 53 anjianshi 2021-11-05 11:56:44 +08:00 真正有创意的内容不是靠语法体现出来的,是算法和奇思妙想,就像唐诗,都是五个字一行七个字一行,不影响每首诗有每首诗的美感 |
![]() | 54 rabbbit 2021-11-05 12:01:34 +08:00 @Features 你们用的是 Angular 吗? 要是用 Rxjs 不许用 for 还能理解 要是 Vue React 还不让用 for 三目... |
![]() | 55 cyrbuzz 2021-11-05 12:13:42 +08:00 ![]() 纯用`map/forEach/filter/find/reduce`怎么实现一个遍历到某内容之后 break 的情况。 |
56 zqx 2021-11-05 12:18:17 +08:00 via Android eslint 是很没用的东西,只能做到表面很统一,程序的内在逻辑还是程序员本人的思路决定的。 一般的程序员都可以在遵守所有规则的情况下,写出冗余的难以理解的代码。 |
![]() | 57 kidult 2021-11-05 12:51:20 +08:00 创意工作? |
58 walpurgis 2021-11-05 12:57:06 +08:00 234 都能理解,不让用 for ,那可以用 while 吗,如果也不让用,那就是强制函数式编程,逐项遍历要写递归了,我不太信初中级程序的能玩的溜,问问你们同事怎么写的 我定 eslint 规则也一大堆,但大部分规则都是 auto fixable 的,不会额外增加使用者的心智负担。 |
![]() | 59 wangyzj 2021-11-05 13:31:28 +08:00 为什么不让用 tab ? 用空格这个太难受了 |
60 daliusu 2021-11-05 13:31:48 +08:00 js 本身太灵活了,限制一下是正常情况,接受不了可以去选择 python ,这跟卷不卷有什么关系,几年前大前端时代还没开启的时候 eslint 甚至是面试题,会配置 lint 懂得控制语法使用都算面试优点 |
![]() | 64 GiftedJarvis 2021-11-05 13:55:11 +08:00 |
![]() | 65 Perry 2021-11-05 13:58:41 +08:00 via iPhone 能看出应届生的年轻无知 |
![]() | 66 fox2081 2021-11-05 13:59:36 +08:00 这个确实有些严格了,tab 这个,一般编辑器也支持 tab 转空格的,1 和 3 无法理解,各有各的使用场景,4 的话,虽然我们没限制,但自己年轻时特别喜欢写一些很复杂的表达式,自己看着很爽,同事看着很难受,确实不是啥好习惯。 eslint+editorconfig+prettier 还是要搞的,最好有 git hooks 检查,要不然团队里有人用 vsc ,有人用 webstorm ,有人 win ,有人 mac ,加一个分号导致十几处修改,提交一下对方全蓝,工作还怎么搞,这些东西又不会限制你的创意。 |
![]() | 67 maichael 2021-11-05 14:05:11 +08:00 ![]() @cyrbuzz #54 通常来说,要 break 的场景只有 find ,可以使用 every 和 some 来替代( https://stackoverflow.com/questions/6260756/how-to-stop-Javascript-foreach ),当然,这不符合语义化的要求。 其实在某些场景下(不确定有多少),find 的性能要比 for-loop-break 的要高( https://www.measurethat.net/Benchmarks/Show/4261/0/find-vs-forof-vs-for-loop ),你可以测下自己的场景试试。 |
![]() | 68 maichael 2021-11-05 14:09:01 +08:00 不觉得这是啥内卷,Lint 和 Prettier 都是为了减少无意义的内耗。 |
![]() | 69 johnnyNg 2021-11-05 14:18:18 +08:00 我觉得没啥毛病 |
70 rongchuan 2021-11-05 14:27:12 +08:00 还好吧,如果配置好规则和 git husky,自己还是按自己的写,提交前自动 lint ,没啥感觉。 |
![]() | 71 zhea55 2021-11-05 14:38:00 +08:00 @cyrbuzz break 可以用 some 。 for 是命令式编程。 现在前端全部换声明式了。 只能实现功能的代码,早删除了好,不然都是坑。 这还只是 eslint 呢,建议把 stylelint 也加上。 不然产出的代码,都不想看。 |
![]() | 72 0xZhangKe 2021-11-05 14:38:53 +08:00 连三目运算符都觉得不直观那还是不要做程序员了吧。 |
![]() | 73 cyrbuzz 2021-11-05 14:48:10 +08:00 @maichael 有意思的代替,单条件用 find 确实是个不错的代替,新技能 Get 。 思考了一下,在与 continue 结合就有点力不从心了,还要做点啥的话也得给变量起个过得去的名字了= =,这样可能没人喷我`for (let i of arrays)`,这样可能会被吊起来锤`let i = arrays.find()`= =。 |
![]() | 74 garlics 2021-11-05 14:51:49 +08:00 eslint 的官网每一条规则都会解释为什么怎么做,刚开始写的时候遇到不理解的规则都会去看下,也学到了很多。http://eslint.cn/docs/rules/ https://eslint.org/docs/rules/ |
![]() | 75 Felldeadbird 2021-11-05 14:51:58 +08:00 后端来回答:禁用 for 我是无法理解的。 全用 map ,foreach 这些? |
![]() | 76 cyrbuzz 2021-11-05 15:01:32 +08:00 @zhea55 some 有点不是绝对代替,用到 break 的地方往往会出现调用其他函数,赋值等操作。用 some 只拿到了状态,我想取那个值还得在迭代一次。要是在 some 的判断函数里加点赋值调用的私货,那这个 some 很不 some ,至少我个人是排斥的= =。 |
![]() | 77 Features OP @Felldeadbird 是的,因为 ES6 以后提供了很多新语法来替代。 强迫程序员使用新的语法糖呗 |
![]() | 78 wanguorui123 2021-11-05 15:15:39 +08:00 前端后端都一样卷,加上每个人的代码风格,更加混沌 |
![]() | 79 EvilDevilJin 2021-11-05 15:28:14 +08:00 这跟卷没啥关系。 这不就是明确规范的编码风格吗。 |
![]() | 80 banricho 2021-11-05 15:32:57 +08:00 除了 4 感觉都挺正常的。。。 |
![]() | 81 wu67 2021-11-05 15:33:42 +08:00 三元运算有点不太理解, 尽管逻辑多的时候三元会带来阅读困难, 但复杂场景可以改用其他写法, 不是禁用三元的理由. 至于 for, 前端的 for 其实有好几种. for( ; ; ) {} 这种确实不直观, for in 确实也不应该用来遍历数组. 但是 for of 可是没毛病的; 再不济还有各个高阶方法, 例如 forEach map filter reduce. 其他两个没啥毛病 |
82 xiao109 2021-11-05 15:34:44 +08:00 虽然是创意工作,但是大多数人都只是在屎山上继续搭建新的屎山而已。所以整越少的幺蛾子最好 |
![]() | 83 360511404 2021-11-05 15:43:17 +08:00 前端这么可怕吗... 我写客户端的,十个 for 里面估计九个用 for in(大多数情况是快速拿数据) 三目运算更是家常便饭,比如根据 bool 返回不同的结果,一行返回就搞定了 |
84 yazinnnn 2021-11-05 15:47:47 +08:00 有这种规矩么? if (bool) return false; else return true; |
![]() | 85 hereIsChen 2021-11-05 15:54:46 +08:00 for in 我用的不少 三目运算符只有简单的单行会用 其他的我觉得正常 |
86 ytll21 2021-11-05 15:55:36 +08:00 这种 lint 只能产出平庸的程序员。可以让出这个规矩的人看看「黑客与画家」这本书,不要给优秀的程序员套上太多的枷锁,他们懂得怎么写出让人看得懂,又漂亮的代码。 |
89 mxT52CRuqR6o5 2021-11-05 16:09:00 +08:00 是用的 airbnb 的 eslint 规则吗 |
![]() | 90 SxqSachin 2021-11-05 16:24:51 +08:00 不让 for 遍历那需要 for await of 的场景咋搞啊,遍历出来然后 Promise.all 吗?感觉反而增加了复杂度 |
![]() | 91 lancelock 2021-11-05 16:25:05 +08:00 这和卷有什么关系 |
![]() | 92 zhea55 2021-11-05 16:29:29 +08:00 @cyrbuzz 在 some 的 callback 里面,你可以手动控制是否返回 true 的。 你的逻辑处理完了,return true 就相当于 break 了 你的需求都可以满足。 只能说这个方法,理解起来没有那么直观。 |
93 jiayong2793 2021-11-05 16:29:45 +08:00 这和卷有什么关系 |
94 AoEiuV020 2021-11-05 17:01:43 +08:00 @TomatoYuyuko #18 > a = b && 1 || 2 我就这么用过,结果遇到 bug , (typeof(DEMO_MODE)!="undefined"&&DEMO_MODE === 'true') ||true &&后面是个 false, 结果走了||里的 true , 只好改成三目, |
![]() | 95 yaphets666 2021-11-05 17:17:04 +08:00 @ifreego 所以现在自动补全都是自动补一个 hasOwnProperty |
![]() | 96 PungentSauce 2021-11-05 17:18:56 +08:00 文作写着倒想我哈哈 哈哈我想倒着写作文 口合口合我亻到 zhe 写亻乍文 |
![]() | 97 sugars PRO 本来觉得「卷」好像有点过了,但看到「令人发指」蚌埠住了哈,最多用「严格」比较合适。 然后其实 1234 都非常正常,15 人的前端团队其实也不算少了,为了统一这是最基本的了 |
![]() | 98 lap510200 2021-11-05 17:31:13 +08:00 统一的代码机构和风格 项目大了会感觉很有意义 别人接手也快 |
99 Leviathann 2021-11-05 19:15:58 +08:00 via iPhone 虽然我也几乎不用 forof 但是某些需要 early return 的地方怎么办 try catch ? 还有没有三目的语言他们的 if 本身就是表达式,js 的 if 不是表达式,在一些只能用表达式的地方怎么搞?一定得 let xxx ;然后在 if 里赋值? |
100 huxiaofan1223 2021-11-05 22:46:37 +08:00 via iPhone @AoEiuV020 不是三目不直观,是有的人嵌套三目,恶心死了 |