Javaer 用了一下 Go web 开发,感觉开发体验倒退了

2022-01-21 14:10:48 +08:00
 binbinyouliiii

之前一直用的 java 写 crud ,最近有项目要用 Go 写,然后我就用了 Go 尝试写了一个 web 程序

但是体验下来,其实开发体验并不怎么高,比如脚手架,虽然有很多现成的,但是我更希望有一种规范或者 interface ,就算是 java 多年前的纯 spring+servlet ,也会提供各种 interface 去规范。这样起码可以保证接手或者同时维护的人能够更快的理解和上手。

开发体验类似写命令行程序,从 main 函数一点点往上加功能,写了一天,看了一天文档,我才把 gin+gorm+zap+viper 配置好,花时间去组合。

crud 方面就不说了,还是比较原始,或者有什么奇淫巧计我不知道的。

上面说的几点只是我简单用了几天,感知比较大的几点。

其实上面说的同样可以放在其他语言上,我也不是对 Go 有什么偏见,而是觉得 GO 这么火,越来越多的互联网公司用来支撑业务,照理来说生态和体验跟其他小众语言不是一个量级的了,但是用起来还是有些失望。

22200 次点击
所在节点    Java
204 条回复
leafre
2022-01-21 16:35:30 +08:00
楼主说的很客观,结果下面一堆 GOer 戾气
SenLief
2022-01-21 16:35:44 +08:00
@binbinyouliiii 是啊,写的如果没有标注好的文档,看都看不懂。这点还不如 python 。至少 django 还能一把梭。
gouflv
2022-01-21 16:43:09 +08:00
当年拿 express 硬写 crud 的时候,也是这种情况
sampeng
2022-01-21 16:44:04 +08:00
rust 的?的设计在层次深了之后也蛮讨厌。。。每格错误类都要做类型转换
ragnaroks
2022-01-21 16:44:30 +08:00
spring 比较完善导致了你的错觉,这个其实就类比于有人只会写 "VUE" 不会 javascript
fenglangjuxu
2022-01-21 16:45:09 +08:00
虽然 我不懂 java 但是你说的对 golang 有点像积木 被人搭建出各种各样的 模型
ClarkAbe
2022-01-21 16:47:43 +08:00
讲道理一般写 golang 除了某些要多种未知类型输入和返回的场景会用 interface.......crud 谁用了 interface 而不是 struct 定义和约束的话内心骂死他........而且并不是一定得在 main 函数上加.....init()了解一下
binbinyouliiii
2022-01-21 16:49:00 +08:00
@sampeng #44 "目前一般认为对于应用程序推荐使用 anyhow ,而对于库推荐使用 thiserror",Rust 一般用这两个
wizzer
2022-01-21 16:52:08 +08:00
https://budwk.com 值得一试~
cmdOptionKana
2022-01-21 16:56:37 +08:00
如果已经熟悉了 Java ,再转过来用 Go ,那自然各种不顺。

但是,如果完全零基础的两个人,学 Go 上手应该会比学 Java 轻松一点。
binbinyouliiii
2022-01-21 16:57:34 +08:00
@ragnaroks #45 我觉得 Spring 的出现是必然的,没有 Spring 也会有叫 Summer 的框架,很多人嫌 Java 穷设计贼多,我觉得人只要一多,必须要有限制和设计来规范,我开始也是嫌烦,但是代码写多了,就能理解为什么会出现这么多设计,Spring 只是其中一种,Java WEB 目前的路都是前人一步步走出来的,我觉得没有任何问题。

说到正题,早些年刚学 Java WEB 的时候,其实人均手操 servlet ,不比现在的 Go 简单多少。
sampeng
2022-01-21 17:00:09 +08:00
@binbinyouliiii 没错。是解决了转换的问题。但在代码的语意上发生了太多变化。其实这个设计本身倒没什么问题。我理解这样设计的原因是 rust 要求在于,请设计好自己的 Error 层次。其实看一些优秀开源代码,是都是自己设计好 Error 。。。
sampeng
2022-01-21 17:01:04 +08:00
我其实个人更倾向于 rust 要比 golang 更适合 web 开发。工程性要比 golang 强。1 年前写的 rust 。现在再去看是看得懂的。golang ? what the fuck ,这个逻辑是干啥,那个逻辑头和尾在哪。。。
sampeng
2022-01-21 17:02:50 +08:00
@binbinyouliiii 说到正题。。现在的 jave 开发不如说是 spring 开发。。。这是一个很矛盾的事。我倒觉得无所谓,业务要用什么就用什么。反正自己每有决定用什么语言的权利
potatowish
2022-01-21 17:05:13 +08:00
已经是 java 的形状了
liuxu
2022-01-21 17:08:01 +08:00
@binbinyouliiii 你拿 spring 对比 gin ,gin 的设计理念就是保证轻量原始,让 go web 框架更 golang ,而不是像别的语言,然后你得出 go web 体验倒退了

我建议你手写 servlet jsp 和 gin 对比,再得出 java 和 golang 哪个更适合 web 开发
liuxu
2022-01-21 17:10:44 +08:00
而且你这个标题“Javaer 用了一下 Go web 开发,感觉开发体验倒退了”,就是带 java 和 golang 的节奏,非常明确
binbinyouliiii
2022-01-21 17:15:23 +08:00
@liuxu #57 哦?那您认为怎么起标题能够表达出我的意思且不算带节奏呢?
QAO
2022-01-21 17:21:38 +08:00
你自己都说“就算是 java 多年前的纯 spring+servlet ,也会提供各种 interface 去规范”了,哪种语言都可以有或者没有“规范”,只是你适应了 java 那套而已

楼上说了很多 java 和 go 的对比,我基本都认同,特别是开发业务代码的效率,但都不是你这种情况呀

承认是因为自己没法短时间从旧思维跳出来就这么难吗?
binbinyouliiii
2022-01-21 17:24:20 +08:00
@liuxu #56 那你可以告诉我可以媲美 Java web 生态的 Go web 组件嘛?我本身就要用,你要是反驳我,建议拿出可以提升我所谓的“开发体验”的产品出来。

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

https://ex.noerr.eu.org/t/829692

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

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

© 2021 V2EX