Dart 每一行都来个“;” 做结尾,好麻烦啊!!!
1
mainjzb 2021-07-19 11:20:49 +08:00
有的 IDE 还没有;,变色
一堆;,挤在一起直接眼花 |
3
love 2021-07-19 11:47:30 +08:00
为啥 JS 界现在共识不写分号了,因为分号真没用且视觉污染很大
|
4
wms 2021-07-19 11:50:37 +08:00
习惯问题, 我们写 C 的,每次看到末尾没有;反而不习惯,特别是 rust 这种, 没有;就是返回语句的,感觉就是倒退啊, 写个 return 有这么麻烦吗?
|
6
maninfog 2021-07-19 12:54:01 +08:00 via iPhone
Kotlin 不用写分号确实很爽,这也是它能写 DSL 的一个原因
|
7
zxCoder 2021-07-19 12:54:57 +08:00
习惯写分号
|
8
EPr2hh6LADQWqRVH 2021-07-19 13:00:12 +08:00 5
分号不是给编译器看的,是给人看的,减轻心智负担,给你人脑清空缓存,好加载下一行
|
9
EPr2hh6LADQWqRVH 2021-07-19 13:00:36 +08:00
这不是编程语言,这是心理学
|
10
hronro 2021-07-19 13:14:18 +08:00 via iPhone 3
Dart 在设计上本来就比 Kotlin 和 Typescript 差远了,你能指望 Google 设计出什么好的语言吗?
|
12
Jirajine 2021-07-19 13:37:31 +08:00 via Android
dart 确实不行,但问题不在分号。分号能区分 expression 和 statement,省略的话还是有不少问题的。
|
13
lagoon 2021-07-19 14:06:22 +08:00
同,目前接触过,c++、c#、Javascript 、Java 、Dart 、Kotlin,这几种语言都多多少少写过一些项目或小玩意。
最喜欢 Kotlin 。 |
14
windyCity1 2021-07-19 14:07:48 +08:00
句尾加不加分号,为什么不用 eslit 来做自动格式化呢。。。。。。
|
15
windyCity1 2021-07-19 14:08:07 +08:00
@windyCity1 #14 eslint
|
16
Leviathann 2021-07-19 14:16:52 +08:00
js/ts 虽然大部分情况分号是可选的,但有些时候语法分号是必须的
比如自动执行函数的上一行必须要加分号。。 |
17
kidcats 2021-07-19 14:26:45 +08:00
dart 属实不太行,要是可以用 kotlin 写 flutter 我光速切过去
|
20
a719031256 2021-07-19 16:07:03 +08:00
@love
你写 js 不写分号,百分百会被打死的 |
21
rbq123456 2021-07-19 16:49:17 +08:00
@a719031256 从业以来,一直不写分号,换了三四家公司,不管是我配置的还是别人配置的 eslint,都是去掉分号
|
22
a719031256 2021-07-19 17:28:27 +08:00
@rbq123456
加上分号会让 js 代码更容易理解,别人接手更容易点,外包公司没法,人流太频繁了 当初做一个项目需要魔改百度地图的 js 时,很庆幸当时那个版本有分号,不然我头发要白不少 另外就是加分号的代码比不加分号的代码看起来更专业一点,可能我是写后端的吧,更在意代码可读性和维护性 每次看着前端写 vue,第一感觉就是这是个玩具,跟 php 一个样,写出来的东西性能真够垃圾的,代码还死难读 |
23
rbq123456 2021-07-19 21:28:54 +08:00
@a719031256 我说呢,合着你一个后端来对前端代码指指点点啊。另外,vue 的源码也是没有分号的
|
24
morize 2021-07-19 22:12:20 +08:00 2
@a719031256 格式化以后有换行不是一样的吗?难道你调的是压缩后的 js 文件? vue 和 php 招谁惹谁了,既然你不是前端,在这点上我就不和你掰扯了。
|
25
FightPig 2021-07-19 22:28:00 +08:00
Dart 要不是 flutter 回了一波血,可能都几乎挂了
|
26
Jaosn 2021-07-19 23:25:26 +08:00
现在我接触到的大多数前端同事都不写分号了。
另外感觉 8 楼老哥说的确实有点道理 |
27
exploreexe 2021-07-19 23:44:50 +08:00
不只是分号,还有逗号,还有嵌套。。。。
这玩意是真难写。。。比 OC 还奇葩 |
28
a719031256 2021-07-20 08:59:19 +08:00
|
29
TomVista 2021-07-20 09:23:23 +08:00
dart 是真和别人不一样,
比如 class ,天真的我以为天下 class 是一家,直到写 flutter dart, 你 TM 给我解释解释这 TM 的是什么 class Dart:?? |
30
rbq123456 2021-07-20 09:34:07 +08:00
@a719031256 所以,你们后端的代码,一行会用几个分号么?如果一行不用好几个分号,那有没有分号又影响什么呢,换行就是新的代码逻辑,如果这个都看不懂,加个分号就能看懂了?
|
31
a719031256 2021-07-20 10:35:16 +08:00
|
32
morize 2021-07-20 13:09:52 +08:00
@rbq123456 严谨一点来说,不加分号指的是不把分号作为语句的结尾。换行并不是新的代码逻辑,虽然绝大多数 js 代码看上去是这样的,只有很少的情况会引起问题,引用一段尤雨溪的话吧
「真正会导致上下行解析出问题的 token 有 5 个:括号,方括号,正则开头的斜杠,加号,减号。我还从没见过实际代码中用正则、加号、减号作为行首的情况,所以总结下来就是一句话:一行开头是括号或者方括号的时候加上分号就可以了,其他时候全部不需要。其实即使是这两种情况,在实际代码中也颇为少见。」 @a719031256 老前辈和现在的前端可能有技术代沟了,前端进化速度太快了😂 你说的两点我都完全不能理解 |
33
a719031256 2021-07-20 13:55:02 +08:00
@morize
加分号能让你的代码更容易理解,不加分号的代码在个别特殊场景下容易产生歧义,这个网上一大堆的例子 至于前端进化速度这个,我没深入了解,只是平时帮前端写代码时感受不出来有什么太快的变化 上面说的其实是我帮前端写代码时的感受,有分号和没分号的代码区别还是挺大的,没分号的代码理解上始终要拐个弯才能理解,尤其是在循环的时候 我前端也就会 vue 和 react,angularjs 现在没怎么用了,至于前端底层我没了解过 |
34
marcong95 2021-07-20 14:51:07 +08:00
@a719031256 #28 从你这个 vue 强制要求不写分号这句话就说明了贵公司没有真的懂前端的。目测只是你直接 vue init 出来的项目自带了 eslint-config-standard,你可以 vue init 的时候选 airbnb 的 eslint preset
我始终还是不太能理解分号到底对可读性有什么提高,能举个例子吗?但是为了照顾水平参差不齐的人员强制要求上分号我觉得可以理解,所以你更加应该引入 eslint 此外你说到代码解析啥的,似乎不少语言都是用换行作为 end of statement 的吧,例如 fortran 、basic 啥的。 |
35
a719031256 2021-07-20 15:36:40 +08:00
@marcong95
因为我经常给前端搽屁股,在前端离职后其他前端又忙的情况下让我们后端来写前端 我遇到大多数情况都是新的前端接手上一个前端的代码,第一句话就是重写这个功能,理由都差不多,看不懂上一个人写的代码,说代码乱七八糟的,分号只是其中的一个原有 如果现在前端水平稍微高点,我也不强求非要写分号,但目前看来很多前端连我们这种兼职还不行 |
36
a719031256 2021-07-20 15:44:22 +08:00
|
37
marcong95 2021-07-20 16:29:40 +08:00
@a719031256 #36 好吧,作为一个前端我也确实不能反驳你这个观点,门槛低且水平参差不齐这是事实。。。。
|