V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
javaisthebest
V2EX  ›  程序员

在虾皮做业务被 go 恶心到了。

  •  
  •   javaisthebest · 9 天前 · 19017 次点击
    之前主要是在中厂用 java 做业务
    目前进了虾皮用 go 做业务。
    这一对比,感觉搞不懂 是脑抽了用 go 了吗?

    接手的前几天就被无边无际的 json 属性文件恶心到了
    和 java 一对比 加载简直就是原始人的烧火棍
    写了 json 内容后 还需要自己去写对应的 config.go 文件 在里面增加对应的结构体
    还得在代码里通过 io 去加载各种资源。

    这个过程 ide 是感知不到的。你想通过属性文件看源码。。还得自己去手动搜索关键字
    简直要人命。这都 21 世纪了 我感觉工具退回去到 20 世纪了。

    包管理更是别说了
    golang 设计者以 git 为包平台
    我现在想找一些封装的 http 或者其他工具类
    由于不像 maven 和 npm 有一个统一的平台打包

    你想去搜 如果没有人在内部写对应的文档。根本找不到你想要的东西

    更气的是 隔几行就出了一个 error.
    也没有全局捕捉。。


    准备明年溜了 人生苦短。我不适合用 go ,
    现在才明白 java 真的不愧是世界第一语言
    188 条回复    2021-12-01 21:23:21 +08:00
    1  2  
    dilu
        1
    dilu  
       9 天前
    管他呢,能吃饭的就是好语言
    rimutuyuan
        2
    rimutuyuan  
       9 天前
    json 转 struct ,可以试试这个

    https://mholt.github.io/json-to-go/
    Rwing
        3
    Rwing  
       9 天前   ❤️ 10
    那个啥,要不体验一下 C# ?
    javaisthebest
        4
    javaisthebest  
    OP
       9 天前
    @dilu xd 这话没毛病。。但是好歹吃饭的家伙顺手点啊。
    Saxton
        5
    Saxton  
       9 天前   ❤️ 14
    JAVA 只要脑子正常点,其实很难写出烂代码的
    Leviathann
        6
    Leviathann  
       9 天前   ❤️ 2
    less is more
    有时候意味着抽象 less ,代码 more
    dqzcwxb
        7
    dqzcwxb  
       9 天前   ❤️ 11
    预测一下
    "是你太菜,不是 go 不行"
    JKeita
        8
    JKeita  
       9 天前
    各有优缺点,列举 java 缺点一样能举一堆。
    xhinliang
        9
    xhinliang  
       9 天前   ❤️ 56
    莫名被楼主的 id 和帖子标题逗笑了....
    lianghuan
        10
    lianghuan  
       9 天前   ❤️ 3
    没有烂的代码 只有烂的人
    shiny
        11
    shiny  
       9 天前
    @xhinliang 哈哈哈哈发现了盲点
    securityCoding
        12
    securityCoding  
       9 天前
    这是前任的问题吧
    lidongyooo
        13
    lidongyooo  
       9 天前   ❤️ 5
    被楼主恶心到了,你牛逼干嘛进用 Go 的公司?吃饱饭摔碗骂娘
    swulling
        14
    swulling  
       9 天前   ❤️ 5
    虽然语言都是表相,但是每个语言都有自己擅长的领域。这种擅长小部分是因为语言特性,大部分是因为软件生态的建设。选择不适合的语言并不是把事情做不成,而是事倍而功半。

    举几个例子,Python 适合炼丹,Java 适合复杂业务逻辑开发,Golang 适合中间件开发等等,这些并不是刻板印象~
    adoal
        15
    adoal  
       9 天前 via iPhone
    离职大法好
    tabris17
        16
    tabris17  
       9 天前   ❤️ 1
    习惯而已,要知道很多 Go 开发是从 Node.js 和 PHP 转过来的
    yazinnnn
        17
    yazinnnn  
       9 天前   ❤️ 1
    害,反正语言只分两种,有人骂的和没人用的

    你看 c#家的亲戚 f#,根本都不会有人看他一眼,即使这玩意儿非常牛逼
    LoNeFong
        18
    LoNeFong  
       9 天前
    难道 java 新增配置不写 Configuration/Properties 吗?
    bianzhifu
        19
    bianzhifu  
       9 天前
    笑而不语
    Reficul
        20
    Reficul  
       9 天前   ❤️ 2
    我写 Java 的时候,我也一路骂到底。

    问题是,我不会主动入职一个写 Java 的团队,然后去网上发帖骂 Java 。 非要被迫改几行 Java 代码,也是喷之前写 Bug 的人。
    matrix1010
        21
    matrix1010  
       9 天前
    你可以试试我最近刚写的配置管理轮子: https://github.com/Yiling-J/piper 。只需要改配置文件其他自动生成。不过用这个你得把以前所有的配置方式都改掉🐶
    javaisthebest
        22
    javaisthebest  
    OP
       9 天前
    @LoNeFong

    1. golang 需要改结构体 /新增结构体
    2. 如果是新文件的话 得通过 ioutils 加载文件流
    3. 加载过程 还得 判断个 error
    4. 写 json 文件 ide 不会有智能提示 属性文件多了。这谁知道 哪个结构体在用哪个属性 全靠猜了

    java 的话哪需要这么多麻烦。。

    直接写个 java 文件 加个 @Configuration 顺便带个 prefix 就智能匹配了
    何况有 idea 提示
    darksword21
        23
    darksword21  
       9 天前 via iPhone
    好家伙直接 java 世界第一语言,一时间不知道从哪开始喷你
    javaisthebest
        24
    javaisthebest  
    OP
       9 天前
    @darksword21 那我改下 改成 后端第一语言 是 java

    请开始你的反驳
    javaisthebest
        25
    javaisthebest  
    OP
       9 天前
    @Reficul
    你骂什么? 骂写的烂?还是
    darksword21
        26
    darksword21  
       9 天前 via iPhone
    @javaisthebest 我不用反驳,你证明一下吧
    documentzhangx66
        27
    documentzhangx66  
       9 天前
    当年 Android 系统进入国内才三四年时,各种烂,但本科毕业生能给到人均 1w...
    vone
        28
    vone  
       9 天前
    看看你的 id ,真是个狗渣男。
    sadfQED2
        29
    sadfQED2  
       9 天前 via Android
    人菜不要怪语言,要不就是你们公司框架烂
    yrj
        30
    yrj  
       9 天前 via iPad
    php:谁夺去了我第一的名号?
    javaisthebest
        31
    javaisthebest  
    OP
       9 天前
    @darksword21

    我觉得好有这些
    1. 搭配 maven 好用 最底层的依赖管理上可靠。maven 简单易学 可以说一天就学会 而且插件强大
    2. 搭配 spring 和 maven 任何框架能傻瓜式接入 第三方要是封得好一点。开箱即用 直接导入就可以使用了
    3. 面向对象设计 可以使用 aop & ioc 。
    4. 编译语言 常驻内存 可以做各种流式任务处理
    5.idea 强大
    Amit
        32
    Amit  
       9 天前   ❤️ 1
    @Saxton 要是之前我会认同这句话,但是现在我知道烂是不分语言的,优秀的语言并不一定保证写出优秀的代码,任何语言都一定可以写出烂代码
    encro
        33
    encro  
       9 天前

    包管理更是别说了
    golang 设计者以 git 为包平台
    我现在想找一些封装的 http 或者其他工具类
    由于不像 maven 和 npm 有一个统一的平台打包


    居然没人喷。。。。
    ztechstack
        34
    ztechstack  
       9 天前   ❤️ 13
    其实,我们用的不是 java ,我们用的是 spring 。
    yulon
        35
    yulon  
       9 天前
    https://gowalker.org 那么好用,用 Go 还要手动写文档?
    LoNeFong
        36
    LoNeFong  
       9 天前   ❤️ 3
    @javaisthebest
    1.java 也需要 JavaBean
    2.java 新增文件难道不需要加载流吗
    3.将配置序列化为结构体只需要判断一次 error(spring-boot 是因为提供了 default 配置,)
    4.spring,Properties 智能提示是 idea 的功能, 和语言有什么关系
    5. 可能你需要 viper
    LoNeFong
        37
    LoNeFong  
       9 天前   ❤️ 4
    我感觉你喷的不是 go, 只是 java 给了你太温馨的家园, 你就以为所有语言该是这个样子的
    linkoc
        38
    linkoc  
       9 天前
    哈哈哈哈哈哈啊哈哈
    qq1340691923
        39
    qq1340691923  
       9 天前
    你是不是觉得有 java 基础转到 go 就什么都不用学了
    scukmh
        40
    scukmh  
       9 天前
    `java is the best `
    chi1st
        41
    chi1st  
       9 天前
    我只想知道虾皮给的多吗?
    LoNeFong
        42
    LoNeFong  
       9 天前
    @chi1st 差国内大厂差一些
    kidonng
        43
    kidonng  
       9 天前 via Android
    同意 37L ,语言基建和语言本身是两码事,用不来基建不代表语言恶心。看多少人把 ohmyzsh 功能当 zsh 自身特性就知道了。
    passer9527
        44
    passer9527  
       9 天前 via iPhone
    我投 Java 一票
    darksword21
        45
    darksword21  
       9 天前 via iPhone
    @javaisthebest 毕业就没用 java 写过了,我没啥要喷的就说下简单的感受

    1.maven 就是用 xml 那个吗,对 xml 很反感直接 pass 。。
    2.spring 很强但是不喜欢大一统
    3.面向对象不是银弹,干啥之前先来个 class 给我印象和你对 go err 的印象差不多
    4.go 不也是吗
    5.goland 也是这个公司的啊。。其次 idea 还收费,而且不喜欢 java 这种离开 ide 都不知道咋整的语言, 没有 emacs 的世界我无法接受
    Buges
        46
    Buges  
       9 天前 via Android   ❤️ 3
    Java 和 go 几乎是两个极端,你不习惯很正常。
    Java 过度抽象,复杂度堆到了极点,go 则是故意设计地陋。如果你接手屎山代码,go 可以有效降低心智负担。
    hakono
        47
    hakono  
       9 天前
    关于 json 这东西我咋感觉是 lz 前人写的代码有问题。。。。。
    qq8331199
        48
    qq8331199  
       9 天前   ❤️ 1
    我不喜欢 java 我也回一句垃圾 java 没意见吧
    dunn
        49
    dunn  
       9 天前
    go 是谁,找他的上级投诉他
    至少也要恶心恶心他
    fuchaofather
        50
    fuchaofather  
       9 天前
    牛皮, 虾皮的钱多吗
    Fu4ng
        51
    Fu4ng  
       9 天前
    确实恶心,来虾皮纯属技术扶贫。
    看了下楼主主页,当时为啥不去亚马逊呢?
    darknoll
        52
    darknoll  
       9 天前
    @javaisthebest 不爽辞啊,要不你让人家把代码改成用 java 写?
    iyear
        53
    iyear  
       9 天前 via Android
    包管理个人觉得 go mod 比那种中心仓库的好用很多
    javaisthebest
        54
    javaisthebest  
    OP
       9 天前
    @iyear 为啥?

    没有中心仓库 想找工具 就真纯靠口耳相传了

    反正我在虾皮 我是没看到有人去集中管理
    4771314
        55
    4771314  
       9 天前
    go 做中间件、云原生很爽,写业务的话就比较一般了。
    自己接受的岗位,只能自己做完了,别一味的的抱怨,首先还是改变自己吧,go 也有自己的优势(虽然有时候是被迫的),建议 lz 先好好学学 go ,再来对比。
    总是站在 java 或者总是以自己舒适的方式来看待 go ,是在是有失偏颇。
    最后,存在即合理。
    dbpe
        56
    dbpe  
       9 天前
    写了几个工具,go 给我的感觉...能用就行...至于方便不方便.那不在乎..
    iyear
        57
    iyear  
       9 天前 via Android
    @javaisthebest pkg.go.dev 不是可以搜包么
    xdeng
        58
    xdeng  
       9 天前
    panic recover 不是可以做到全局捕捉么
    zhoudaiyu
        59
    zhoudaiyu  
       9 天前   ❤️ 1
    Either you or your code can run is enough
    aptx4689
        60
    aptx4689  
       9 天前
    goland 把 json 粘贴进去不是可以自动生成 struct 么。。。
    yangyaofei
        61
    yangyaofei  
       9 天前 via Android
    @darksword21 其实,java 生态还是牛逼的,就写后端来说,spring 很爽啊 快速实现什么的,maven 太恶心了,都是用 gradle.

    以及,我主要写 python 的,在我的角度比 java 好用多了,但真写代码,还是 java 不那么容易写出没法用的代码
    Nasei
        62
    Nasei  
       9 天前   ❤️ 11
    你现在能理解 c#是怎么看 java 的了吧
    GGGG430
        63
    GGGG430  
       9 天前   ❤️ 4
    脉脉发一次, 又来 v2 发一次? 你到底发了多少地方啊, 至于吗, 不爽就跑啊, 又没人逼着你用
    dilu
        64
    dilu  
       9 天前
    @javaisthebest 以前写 PHP 很顺手,奈何饭吃不饱嘛 doge
    mxT52CRuqR6o5
        65
    mxT52CRuqR6o5  
       9 天前
    我听下来感觉是不是说把应该 hard code 的东西写到 json 配置里去了
    hard code 和 json 配置,我也是倾向于 hard code
    fxxkgw
        66
    fxxkgw  
       9 天前
    看到那么多问待遇的 回复下:虾皮待遇中上 深圳那面有机会去新加坡 我姐她老公在那 4/5 年样子 然后全家去了新加坡总部了。。
    eliteYang
        67
    eliteYang  
       9 天前
    马上都 2022 年了,还有人在玩“PHP 是最好的语言”的哏?
    azkaban
        68
    azkaban  
       9 天前
    go 性能 nb 啊,我们的线上 dsp 和算法都是 go ,ssp 还是 java
    cloudzhou
        69
    cloudzhou  
       9 天前
    @javaisthebest 你有没想过,除了 4 ,其他的本质是 SpringBoot 的强大,相反来说,只能说 Shopee 基础太弱了
    pengtdyd
        70
    pengtdyd  
       9 天前
    只要待遇好,必须干到老。
    silvernoo
        71
    silvernoo  
       9 天前   ❤️ 1
    笑死 自己菜怪狗
    zjsxwc
        72
    zjsxwc  
       9 天前 via Android
    套用成功学的一句话“格局小了”
    starcraft
        73
    starcraft  
       9 天前 via Android   ❤️ 6
    很有意思,我觉得只有国内这种 go 生态和 c#一样畸形的环境,才能有这种评论区。
    我蛮想看若干年后,又出来个新语言和 go 玩办公室政治,洗 go 团队的时候,会是个什么画风。
    不对,我赌这帮人已然被优化了,也没什么画风了。
    我再赌那时候 Java 依旧稳坐业务王座。
    qq1340691923
        74
    qq1340691923  
       9 天前 via Android   ❤️ 1
    [7 天用 Go 从零实现系列背后的故事-哔哩哔哩直播] https://b23.tv/ZdSdcHF
    sprite82
        75
    sprite82  
       9 天前
    go 写复杂业务是真的不爽,简单的业务搞搞还是挺舒服的
    msaionyc
        76
    msaionyc  
       9 天前 via iPhone
    @Reficul 骂写 bug 的人这种行为并不比骂语言这种行为更高尚
    satoru
        77
    satoru  
       9 天前
    不要去这种不用世界上最好的编程语言的公司
    fml87
        78
    fml87  
       9 天前   ❤️ 1
    我也不理解为啥要用 go 写业务,开发速度比 C 快不了多少,复杂业务用 go 写一遍的时间,我能用 ruby/js/python 各写三种不同的实现
    guanhui07
        79
    guanhui07  
       9 天前
    go 挺好的啊
    outersider
        80
    outersider  
       9 天前
    我只想知道虾皮给的多吗?
    ClericPy
        81
    ClericPy  
       9 天前
    哈哈 还是水平不够吧, 以前现学的 go 同事不知道 json 和 HTML 都有现成解析器, 结果自己动手发明了一套语法... 多用用就习惯了, 反正我现在是学 go 但不用它, 早晚用的上
    HappyFox
        82
    HappyFox  
       9 天前   ❤️ 1
    @javaisthebest #54 歪个楼,这个是感觉是基建+维护的问题,但更像是业务太快没时间提技术优化需求。建议和产品、研发 leader 对一下,看看是逐步优化还是大版本优化。

    中心仓库这个,个人见过的解决办法:
    1 、自建私有源,保留历史版本(对应 java 的自建仓,不过 go 的更简单,gitlab 顺便存一下依赖库就解决了,也不需要多部署别的服务)
    2 、运维团队在 1 的基础上审核并更新版本,merge 公司内使用的魔改版到最新版(避免恶意代码+适应特异性优化)
    3 、公司内的文档工程师定期处理组内对外提供服务的工具文档(有云服务的基本都有,自己部门没有,可以去别的部门借一个临时用用)

    其实老哥你换个思路,公司问题越多,你的机会也就越多。如果公司啥问题没有,那找咱们来干啥。。。
    EscYezi
        83
    EscYezi  
       9 天前 via iPhone
    看了一下楼主贴子,感觉自己已经被 spring 惯坏了🤣虽然总嫌弃启动慢之类的,写起业务还是真香
    SuperManNoPain
        84
    SuperManNoPain  
       9 天前
    作为 java 开发,java 启动,内存确实慢,但是开发起来确实是舒服😂
    sagaxu
        85
    sagaxu  
       9 天前 via Android   ❤️ 1
    less is more 的精髓:少量语法大量代码
    ylsc633
        86
    ylsc633  
       9 天前   ❤️ 5
    都是先入为主惹的祸

    java 跟 go 本来就是两个相反的理念

    假如你先写的 go, 再去写的 java,你会发现 无比繁重, 启动贼慢, 内存疯长,并发代码逻辑复杂还容易出问题

    是一个道理..

    就看你先熟悉哪个了

    毕竟语言不同,他们的生态圈完全不一样, 所以都有个习惯的过程


    就跟你现在在你这家公司待熟悉了.. 什么业务你都觉得有底

    可是你入职了一家新公司, 你会发现前期很难熬,因为很多你不熟悉的,就觉得十分不习惯..


    那说回原题 既然不习惯 go, 就跟你不喜欢这公司一样,不想习惯了,就换呗 太正常了
    tbg
        87
    tbg  
       9 天前
    我以为楼主被 gou 恶心到了
    liuxu
        88
    liuxu  
       9 天前
    @xhinliang 盲生一下子就发现了华点
    zyfsuzy
        89
    zyfsuzy  
       9 天前
    真牛逼,电商不用 Java 闹呢
    wdlth
        90
    wdlth  
       9 天前
    你可以先写 Kotlin 恶心一下,然后再写 go 。
    JudyHal
        91
    JudyHal  
       9 天前   ❤️ 3
    唉,没想到这种弱智言论也有这么多人赞同,V2EX 现在已经变成反智主义的中心了,Java 这种除了中国都没有地方用的语言也吹的出来
    liandi1990
        92
    liandi1990  
       9 天前 via iPhone
    @yazinnnn #17

    我们公司现在就在招 F# 开发

    要求非常低,甚至都不需要有 F# 工作经验,只要是科班硕士,能熟练使用任一 ML 方言,即可达到面试要求
    adoal
        93
    adoal  
       9 天前
    @EscYezi 对,所谓 Java 写 CRUD 写业务逻辑省事,大部分其实是在说 Spring……不严格地来讲(经不起咬文嚼字者抬杠),可以在某种程度上把 Spring 系列框架甚至 IDEA 的一些自动化功能看作是以 Java 为底层的 DSL……只就 Java 本身来说写业务有啥省事的,啰嗦致死。
    iyaozhen
        94
    iyaozhen  
       9 天前
    现在在用 go 、Python ,之前 PHP JAVA Python 多一点

    整体来说 go 还才起步,肯定很多问题

    1. json 属性文件,不管哪个语音都需要配置文件吧?不然怎么办 不喜欢 json 可以用 yaml
    2. 在里面增加对应的结构体,这个就是反序列化,这个难道 java 不用写一个 class ?
    3. 还得在代码里通过 io 去加载各种资源,额 哪个语言不都这样嘛?
    4. 这个过程 ide 是感知不到的 确实,只能看见定义的 struct ,但是配置中的具体内容看不见
    5. 统一的平台打包 https://pkg.go.dev/ 这个 其实还有个问题,go 包管理依赖 git ,但公司内部 git 都是有权限的,导致编译依赖要申请一堆权限,非常麻烦
    6. 如果没有人在内部写对应的文档 其实话又说回来,公司内部开发的话,工具链限制的非常死,orm mysql/redfis 啥的客户端都规定好了,估计你没找到文档,或者公司内部本来就没有
    7. 隔几行就出了一个 error. 有一说一,确实垃圾
    iyaozhen
        95
    iyaozhen  
       9 天前 via Android
    JAVA 主要是还是得益于 spring 一桶江湖了。

    要是 go 有个框架统一了,IDE 分分钟给你支持,要咋提示就咋提示
    javaisthebest
        96
    javaisthebest  
    OP
       9 天前
    启动慢 这个我承认

    但是 go 并发代码 我是表示怀疑

    Java 的并发一般通过线程池 封装好的

    Web 环境下开发的 Spring bean 都是无状态的

    只要照猫画虎 完全可以不用担心

    golang 的协程 随意创建 也没有统一的池来管理

    一旦协程出了问题。一般人也不太敢去修
    cubecube
        97
    cubecube  
       9 天前
    @JKeita java 语言本身,除了啰嗦点,没啥太大的缺点了。几个所谓的语言缺陷,马上 loom ,值类型,泛型特例化都要修好了
    zhuangzhuang1988
        98
    zhuangzhuang1988  
       9 天前
    @javaisthebest 不自己控制怎么显得自己牛逼呢
    Mirage09
        99
    Mirage09  
       9 天前 via iPhone   ❤️ 3
    @JudyHal 我记得你,极端 java hater 是真的敢扯淡…别的不说,Amazon 那么大一个主用 java 的公司被你吃了?
    shyangs
        100
    shyangs  
       9 天前
    Java 適合做業務. Go 適合中間件.

    前人總結過經驗教訓. 你又驗證了一次.
    1  2  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1058 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 23:09 · PVG 07:09 · LAX 15:09 · JFK 18:09
    ♥ Do have faith in what you're doing.