写完 Kotlin 再来写 Dart,怎么感觉语法倒退了?

2021-07-19 11:17:47 +08:00
 secretman

Dart 每一行都来个“;” 做结尾,好麻烦啊!!!

3976 次点击
所在节点    问与答
37 条回复
rbq123456
2021-07-19 16:49:17 +08:00
@a719031256 从业以来,一直不写分号,换了三四家公司,不管是我配置的还是别人配置的 eslint,都是去掉分号
a719031256
2021-07-19 17:28:27 +08:00
@rbq123456

加上分号会让 js 代码更容易理解,别人接手更容易点,外包公司没法,人流太频繁了

当初做一个项目需要魔改百度地图的 js 时,很庆幸当时那个版本有分号,不然我头发要白不少

另外就是加分号的代码比不加分号的代码看起来更专业一点,可能我是写后端的吧,更在意代码可读性和维护性

每次看着前端写 vue,第一感觉就是这是个玩具,跟 php 一个样,写出来的东西性能真够垃圾的,代码还死难读
rbq123456
2021-07-19 21:28:54 +08:00
@a719031256 我说呢,合着你一个后端来对前端代码指指点点啊。另外,vue 的源码也是没有分号的
morize
2021-07-19 22:12:20 +08:00
@a719031256 格式化以后有换行不是一样的吗?难道你调的是压缩后的 js 文件? vue 和 php 招谁惹谁了,既然你不是前端,在这点上我就不和你掰扯了。
FightPig
2021-07-19 22:28:00 +08:00
Dart 要不是 flutter 回了一波血,可能都几乎挂了
Jaosn
2021-07-19 23:25:26 +08:00
现在我接触到的大多数前端同事都不写分号了。

另外感觉 8 楼老哥说的确实有点道理
exploreexe
2021-07-19 23:44:50 +08:00
不只是分号,还有逗号,还有嵌套。。。。

这玩意是真难写。。。比 OC 还奇葩
a719031256
2021-07-20 08:59:19 +08:00
@rbq123456
所以现在大点的项目都不允许使用 vue,vue 强制要求不写分号导致 vue 项目可维护性特别低,一旦换了一个前端,这个功能可能就得重写,我们外包也就是瞅着 vue 低价劳动力多才用的

@morize
我入行时还不分前后端,前端都是我们后端写,格式化这东西少用
TomVista
2021-07-20 09:23:23 +08:00
dart 是真和别人不一样,
比如 class ,天真的我以为天下 class 是一家,直到写 flutter dart,

你 TM 给我解释解释这 TM 的是什么 class
Dart:??
rbq123456
2021-07-20 09:34:07 +08:00
@a719031256 所以,你们后端的代码,一行会用几个分号么?如果一行不用好几个分号,那有没有分号又影响什么呢,换行就是新的代码逻辑,如果这个都看不懂,加个分号就能看懂了?
a719031256
2021-07-20 10:35:16 +08:00
@rbq123456

换行就是新的代码逻辑???你没做过代码解析?
morize
2021-07-20 13:09:52 +08:00
@rbq123456 严谨一点来说,不加分号指的是不把分号作为语句的结尾。换行并不是新的代码逻辑,虽然绝大多数 js 代码看上去是这样的,只有很少的情况会引起问题,引用一段尤雨溪的话吧
「真正会导致上下行解析出问题的 token 有 5 个:括号,方括号,正则开头的斜杠,加号,减号。我还从没见过实际代码中用正则、加号、减号作为行首的情况,所以总结下来就是一句话:一行开头是括号或者方括号的时候加上分号就可以了,其他时候全部不需要。其实即使是这两种情况,在实际代码中也颇为少见。」
@a719031256 老前辈和现在的前端可能有技术代沟了,前端进化速度太快了😂 你说的两点我都完全不能理解
a719031256
2021-07-20 13:55:02 +08:00
@morize

加分号能让你的代码更容易理解,不加分号的代码在个别特殊场景下容易产生歧义,这个网上一大堆的例子

至于前端进化速度这个,我没深入了解,只是平时帮前端写代码时感受不出来有什么太快的变化

上面说的其实是我帮前端写代码时的感受,有分号和没分号的代码区别还是挺大的,没分号的代码理解上始终要拐个弯才能理解,尤其是在循环的时候

我前端也就会 vue 和 react,angularjs 现在没怎么用了,至于前端底层我没了解过
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 啥的。
a719031256
2021-07-20 15:36:40 +08:00
@marcong95

因为我经常给前端搽屁股,在前端离职后其他前端又忙的情况下让我们后端来写前端

我遇到大多数情况都是新的前端接手上一个前端的代码,第一句话就是重写这个功能,理由都差不多,看不懂上一个人写的代码,说代码乱七八糟的,分号只是其中的一个原有

如果现在前端水平稍微高点,我也不强求非要写分号,但目前看来很多前端连我们这种兼职还不行
a719031256
2021-07-20 15:44:22 +08:00
@marcong95

好了,吐槽完了,心情也好不少,不继续这个话题了

现在 vue 低门槛让很多前端水平超级垃圾,真的是被恶心到了,搞得现在写完自己事还得帮别人弄
marcong95
2021-07-20 16:29:40 +08:00
@a719031256 #36 好吧,作为一个前端我也确实不能反驳你这个观点,门槛低且水平参差不齐这是事实。。。。

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

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

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

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

© 2021 V2EX