纯吐槽帖 关于 go 的 err 和重载
source link: https://www.v2ex.com/t/824287
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
写了几个月的业务了 写 err 真的吐了 牵扯到序列 /反序列话、有任何文件、io 操作的地方都会有 error
报的那么多 error 有啥用? 报那么多 error 没能解决问题 第一行成功 下面的几处 error 第一行的 error 岂不是白打了? 这种与业务无强关联的地方 与业务嵌套这么深 直接全局异常捕捉不就行了?
还有都 21 世纪了 居然不支持重载 输出一样 输入参数不一样 不能重载 就很无语。我写个方法功能一样 还得另外起个名字
这群设计者是学术界呆太久了?
xgfan 2 小时 39 分钟前
Mexion 2 小时 36 分钟前
Wenco 2 小时 26 分钟前
qq8331199 2 小时 24 分钟前 2
useben 2 小时 22 分钟前
看到这句话就证明你连 go 的背景都没了解清楚....
Mohanson 2 小时 20 分钟前 6
对于第一点, go 是有你认为的全局异常捕捉的, 叫做 panic. 一部分语言不区分异常和错误, 一部分语言会区分, 如果你之前没有写过区分异常和错误的语言, 那么切换到 go 会非常不适应. 这点我在最初学习 Go 的时候也骂过, 因为我之前写的较多的是 Java 和 Python. 如果你是从 C 转, 那这种设计就会认为是理所当然的.
至于重载, CPP 社区观点就是分裂的, 后来的新语言大多数都认为是个坏设计(rust 和 go 举例), 因为其会带来"二义性". **所以问题不是“为什么 Rust 和 Go 不支持函数重载”,而是为什么要允许 Rust 和 Go 支持函数重载?只有在有正当理由的情况下,才能添加一个功能**. 但我们知道, 这两门语言在没有这个功能的情况下工作的很好, 创造了许多伟大的程序. (比如大多数 Go 反对者: 为什么 A 语言有这个设计而 Go 没有, 这就不是一个正当理由
当语言设计者做出决定的时候, 一定是正反两方都经过了激烈的较量, 并且其中一方获得了胜利(例如你认为很恶心的 Go 错误处理, 不支持重载等功能). 作为一个学习者, 你应该去了解当时正反两方的观点, 为什么反方会失败, 为什么正方会胜利, 而不是单纯的发泄.
achenme 2 小时 20 分钟前
cmdOptionKana 2 小时 17 分钟前
比如重载,绝大多数情况下重载只是更 implicit 而已,没啥特别好处。
Kasumi20 2 小时 17 分钟前
partystart 2 小时 17 分钟前
Leviathann 2 小时 14 分钟前
Mohanson 2 小时 14 分钟前
```
在你说出 "我同意", "我不同意", 或 "我暂缓评论" 之前, 你一定要能肯定地说: "我了解了."
同意对方说法, 与不同意对方说法都一样要花心力来作判断的. 同意或不同意都有可能对, 也有可能不对. 毫无理解便同意只是愚蠢, 还不清楚便不同意也是无礼.
```
无论是赞同一个设计, 还是反对一个设计, 你一定要能肯定地说: 我了解这个设计背后的取舍. 然后才有资格发表自己的看法.
cmdOptionKana 2 小时 12 分钟前
语言特性的设计,最最主要考虑的因素叫做 trade off, 如果吐槽一个特性只单方面说优点或缺点,那要么就是完全不懂 trade off (约等于完全不懂设计),要么就是懂了但故意装傻带节奏。
cmdOptionKana 2 小时 6 分钟前
partystart 2 小时 6 分钟前
为什么这么设计呢
回答一律都是大道至简
那为什么在 1.18 里面添加范型呢?
请问是不是又是大道至简?
能别跪舔吗?
好就是好 不好就是不好
哪来的那么多权衡利弊 少给自己加戏了行吗?
python 反人类缩进符
c++冗余到创始人都不敢说自己掌握了
java 啰里八嗦的继承划分
php 函数命名混乱
是不是也要吹出一个 123 来?
只要是人设计的都会有败笔
直接承认不行吗?
java 吹能承认 java 啰嗦
go 吹能承认设计的垃圾吗?
jorneyr 2 小时 4 分钟前
* 标准库的错误不带 stack ,后来受不了了,在 pkg 的仓库里搞了个带 stack 的 errors
* 开始说泛型怎么怎么样,最后 1.8 开始支持泛型了
* ...
* 很多大家希望,但是 Go 不支持的特性,Go 官方也写了不少文章解释为什么要这么干的合理性,但是慢慢的又把这些特性给加上了
* 网上有不少文章讨论 Go 推翻自己最初自以为傲的特性
partystart 2 小时 2 分钟前
mainjzb 1 小时 59 分钟前
重载问题不大可以接受
cmdOptionKana 1 小时 58 分钟前 3
而且你的逻辑也不是一般的混乱,你说:
“好就是好 不好就是不好,哪来的那么多权衡利弊”
你说说,不权衡利弊就能判断好不好?
判断好不好的唯一方法,不就是权衡利弊吗?难道靠占卜吗?
darksword21 1 小时 56 分钟前 via iPhone
ch2 1 小时 56 分钟前 1
kiripeng 1 小时 51 分钟前
CosimoZi 1 小时 48 分钟前 1
partystart 1 小时 47 分钟前
什么叫好 什么叫做不好 谁掌握好的定义?
go 设计团队自己掌握 他们觉得好就是好
至于什么权衡利弊就更搞笑了 是个人就有个偏好 是个团队都有组织特性
go 设计团队要是喜欢用脚敲代码 他们也可以给 go 加这个特性
你回答下为什么之前不支持范型 下一次要支持范型
是不是也是权衡利弊?第一做的决定正确 第二次做的决定肯定也是正确?
go 团队不停的正确?
yulon 1 小时 46 分钟前
kett 1 小时 43 分钟前
Buges 1 小时 32 分钟前 via Android
恰恰相反,go 常常被批做“民科设计的语言”,因其重复很多古老语言的错误和缺乏现代成熟 pl 理论支持的特性。
sagaxu 45 分钟前 via Android
masterclock 43 分钟前
Go 放弃过去几十年语言界的研究成果,自己再搞一套,典型的 “现在的 XX 太臃肿了,我要做一个小而美的 YY”,最后成为更臃肿更屎山的 ZZ 。
Go1.18 加入了泛型,但是不支持泛型方法,导致无法写出高阶抽象来,还是残废。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK