纯吐槽帖 关于 go 的 err 和重载

2021-12-24 17:43:23 +08:00
 partystart

写了几个月的业务了 写 err 真的吐了 牵扯到序列 /反序列话、有任何文件、io 操作的地方都会有 error

报的那么多 error 有啥用? 报那么多 error 没能解决问题 第一行成功 下面的几处 error 第一行的 error 岂不是白打了? 这种与业务无强关联的地方 与业务嵌套这么深 直接全局异常捕捉不就行了?

还有都 21 世纪了 居然不支持重载 输出一样 输入参数不一样 不能重载 就很无语。我写个方法功能一样 还得另外起个名字

这群设计者是学术界呆太久了?

10246 次点击
所在节点    程序员
130 条回复
james122333
2021-12-25 23:04:07 +08:00
@micean
抛异常是种选择 但一串函式通通要抛是太过 uncaughtexception 照样抓的到 为何要写一堆无用代码
能觉得好开发纯粹是网络资源多外加 ide 助攻
go 现在的异常处理封装一下爽太多了
if err 照样封装一样爽
james122333
2021-12-25 23:09:57 +08:00
异常栈也蛮多余的 通常都是要准确知道哪步有问题
而非整串过程 过程自己知道也会追 单步侦错更会列出过程
micean
2021-12-25 23:36:10 +08:00
@james122333

事实就是封装就是爽,java 里所有异常均继承自 throwable 这一个类型,还可以自定义异常,开发者可以在 spring 里指定处理 throwable 以及其他异常,保证 request 可以顺利 response ,完全没有无用代码。
java 异常栈有多余的部分,但多余不是一个问题,完全可以准确的了解问题所在
james122333
2021-12-25 23:44:51 +08:00
@micean
有用的封装是爽 无用会很不爽 我说的是 throws 语句问题 还不能够不用
那只是错误类型 go 一样可以
james122333
2021-12-25 23:45:56 +08:00
你不爽 errors 包自己定义都可以
james122333
2021-12-25 23:52:25 +08:00
至于异常栈你确定 ide 不给你高亮你能一眼看出哪里有问题吗
micean
2021-12-26 00:24:07 +08:00
@james122333

有包名啊,哪里难了
而且 IDE 不仅能高亮,点一下还能直接调转到问题行代码,这么好用干嘛不用
james122333
2021-12-26 00:30:47 +08:00
@micean
我说的是不想写 throws 你跟我扯有类型
所以没错是 ide 辅助 然而辅助这个很多于的东西
james122333
2021-12-26 00:32:01 +08:00
是每个函数上面那个 throws
james122333
2021-12-26 00:33:49 +08:00
ide 辅助才好用 vs 原本就好用
给我选选后者
h280254082
2021-12-26 00:45:37 +08:00
总结 但凡和我的想法不一样的设计都是辣鸡设计 我就要喷 谁说有合理性就喷谁 在这贴里面认真去讨论某个设计对不对的可能需要多看些帖子就知道和某些人正经讨论是浪费时间了
Glauben
2021-12-26 00:53:22 +08:00
这种随随便便 XX 小将扣帽子的能是正经人?觉得 Go 好就是 Go 小将,Java 小将你好
micean
2021-12-26 01:15:42 +08:00
@james122333

为什么要写 throws ? lombok 注解一下就可以了
james122333
2021-12-26 01:32:14 +08:00
@micean
依赖 lib 而且觉得写註解没有比较好
代码看起来就是要清爽
flynaj
2021-12-26 01:43:27 +08:00
这种就是语言特性,不可能完美,总要做出一些取舍。
Austaras
2021-12-26 01:54:58 +08:00
重载倒不是什么坏设计,单纯就是没什么用。。。
techstay
2021-12-26 03:08:22 +08:00
我也不喜欢错误码,trycatch 多好,谁要负责谁就去捕获异常,然后该咋写咋写就好了
hpeng
2021-12-26 09:01:20 +08:00
喷挺好的,希望像 go 范型一样,喷久就给你弄一个出来就更好了。
hutoer
2021-12-26 09:23:01 +08:00
重载还是有用的,比如:
Color::Color(0,0,255)
Color::Color("#FFFFFF")
Color::Color(Color::RED)
cmdOptionKana
2021-12-26 09:48:18 +08:00
@hutoer 关于重载看过一些讨论,比如你举的例子,改成

Color::ColorRGB(0,0,255)
Color::ColorHex("#FFFFFF")
Color::ColorName(Color::RED)

只是一种更显性的风格,很难说好不好,只能说各人喜欢的风格不一样。

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

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

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

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

© 2021 V2EX