V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
secretman
V2EX  ›  问与答

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

  •  1
     
  •   secretman · 2021-07-19 11:17:47 +08:00 · 3750 次点击
    这是一个创建于 1005 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    37 条回复    2021-07-20 16:29:40 +08:00
    mainjzb
        1
    mainjzb  
       2021-07-19 11:20:49 +08:00
    有的 IDE 还没有;,变色
    一堆;,挤在一起直接眼花
    secretman
        2
    secretman  
    OP
       2021-07-19 11:26:55 +08:00
    @mainjzb 这里我强烈推荐 IDEA 系列 IDE 的主题:Atom One Dark,配色非常好!!!
    love
        3
    love  
       2021-07-19 11:47:30 +08:00
    为啥 JS 界现在共识不写分号了,因为分号真没用且视觉污染很大
    wms
        4
    wms  
       2021-07-19 11:50:37 +08:00
    习惯问题, 我们写 C 的,每次看到末尾没有;反而不习惯,特别是 rust 这种, 没有;就是返回语句的,感觉就是倒退啊, 写个 return 有这么麻烦吗?
    ufan0
        5
    ufan0  
       2021-07-19 12:44:52 +08:00
    @wms #4 深有体会,表示不好适应。
    maninfog
        6
    maninfog  
       2021-07-19 12:54:01 +08:00 via iPhone
    Kotlin 不用写分号确实很爽,这也是它能写 DSL 的一个原因
    zxCoder
        7
    zxCoder  
       2021-07-19 12:54:57 +08:00
    习惯写分号
    EPr2hh6LADQWqRVH
        8
    EPr2hh6LADQWqRVH  
       2021-07-19 13:00:12 +08:00   ❤️ 5
    分号不是给编译器看的,是给人看的,减轻心智负担,给你人脑清空缓存,好加载下一行
    EPr2hh6LADQWqRVH
        9
    EPr2hh6LADQWqRVH  
       2021-07-19 13:00:36 +08:00
    这不是编程语言,这是心理学
    hronro
        10
    hronro  
       2021-07-19 13:14:18 +08:00 via iPhone   ❤️ 2
    Dart 在设计上本来就比 Kotlin 和 Typescript 差远了,你能指望 Google 设计出什么好的语言吗?
    WenhaoWu
        11
    WenhaoWu  
       2021-07-19 13:26:36 +08:00 via Android
    @maninfog 我们公司就在用 Dart 写 DSL,petitparser 这个库了解下
    Jirajine
        12
    Jirajine  
       2021-07-19 13:37:31 +08:00 via Android
    dart 确实不行,但问题不在分号。分号能区分 expression 和 statement,省略的话还是有不少问题的。
    lagoon
        13
    lagoon  
       2021-07-19 14:06:22 +08:00
    同,目前接触过,c++、c#、Javascript 、Java 、Dart 、Kotlin,这几种语言都多多少少写过一些项目或小玩意。

    最喜欢 Kotlin 。
    windyCity1
        14
    windyCity1  
       2021-07-19 14:07:48 +08:00
    句尾加不加分号,为什么不用 eslit 来做自动格式化呢。。。。。。
    windyCity1
        15
    windyCity1  
       2021-07-19 14:08:07 +08:00
    @windyCity1 #14 eslint
    Leviathann
        16
    Leviathann  
       2021-07-19 14:16:52 +08:00
    js/ts 虽然大部分情况分号是可选的,但有些时候语法分号是必须的
    比如自动执行函数的上一行必须要加分号。。
    kidcats
        17
    kidcats  
       2021-07-19 14:26:45 +08:00
    dart 属实不太行,要是可以用 kotlin 写 flutter 我光速切过去
    secretman
        18
    secretman  
    OP
       2021-07-19 15:53:48 +08:00
    @kidcats Kotlin 的风格写起来还是很舒服的,语法糖加持下,开发效率也高
    secretman
        19
    secretman  
    OP
       2021-07-19 15:54:57 +08:00
    @lagoon 其实 C# 也不错,微软要是早个 10 年开源,那可能又是另外一个故事了
    a719031256
        20
    a719031256  
       2021-07-19 16:07:03 +08:00
    @love
    你写 js 不写分号,百分百会被打死的
    rbq123456
        21
    rbq123456  
       2021-07-19 16:49:17 +08:00
    @a719031256 从业以来,一直不写分号,换了三四家公司,不管是我配置的还是别人配置的 eslint,都是去掉分号
    a719031256
        22
    a719031256  
       2021-07-19 17:28:27 +08:00
    @rbq123456

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    现在 vue 低门槛让很多前端水平超级垃圾,真的是被恶心到了,搞得现在写完自己事还得帮别人弄
    marcong95
        37
    marcong95  
       2021-07-20 16:29:40 +08:00
    @a719031256 #36 好吧,作为一个前端我也确实不能反驳你这个观点,门槛低且水平参差不齐这是事实。。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1207 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 18:10 · PVG 02:10 · LAX 11:10 · JFK 14:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.