Go编写的代码惨遭严厉批评,问题出在哪?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2066个文字,预计阅读时间需要9分钟。
hello 家长,我是小楼。不知道家长还记不记得,我上次找到的一个Go的Benchmark执行会超时的Bug。就是这篇《我好像发现了一个Go的Bug?》。之后我就向Go提交了一个PR进行修复,本以为“
hello大家好,我是小楼。
不知道大家还记不记得我上次找到了一个Go的Benchmark执行会超时的Bug?就是这篇文章《我好像发现了一个Go的Bug?》。
之后我就向Go提交了一个PR进行修复,本想等着代码被Merge进去,以后也可以吹牛说自己是个Go的Contributor,但事情并不顺利,今天就来分享一下这次失败的代码提交。
第一次提交在我意识到Bug时,就迫不及待想去修复,于是有了这一次提交。
在说代码前,先说点关于Go仓库的问题,Go并没有直接托管在github,而是自建的Gerrit Code Review,github上只是个镜像仓库,所有在github上提交的issue和代码都会被一个机器人搬运到Gerrit上。
而且Go对提交代码的要求是必须关联一个issue,于是我就提了一个,自问自答了属于是。
描述了一下遇到的问题,但隔天被一位大佬认为是重复问题,并且关闭了这个issue
但我点进去仔细看了下,和我说的应该没有关系,他们讨论的是单测超时不生效的问题,于是我狡辩了一下。
果然狡辩是有用的,另一位大佬同意我的观点,于是我给他点了个赞,但他也指出我的代码存在问题。
下面进入今天的正题,为了便于讲解,我先把有问题的代码段摘出来:
func (b *B) launch() {
...
// n(int64)可能会溢出
n = goalns * prevIters / prevns
...
}
既然知道n会溢出,还不简单?加个判断就完了。
本文共计2066个文字,预计阅读时间需要9分钟。
hello 家长,我是小楼。不知道家长还记不记得,我上次找到的一个Go的Benchmark执行会超时的Bug。就是这篇《我好像发现了一个Go的Bug?》。之后我就向Go提交了一个PR进行修复,本以为“
hello大家好,我是小楼。
不知道大家还记不记得我上次找到了一个Go的Benchmark执行会超时的Bug?就是这篇文章《我好像发现了一个Go的Bug?》。
之后我就向Go提交了一个PR进行修复,本想等着代码被Merge进去,以后也可以吹牛说自己是个Go的Contributor,但事情并不顺利,今天就来分享一下这次失败的代码提交。
第一次提交在我意识到Bug时,就迫不及待想去修复,于是有了这一次提交。
在说代码前,先说点关于Go仓库的问题,Go并没有直接托管在github,而是自建的Gerrit Code Review,github上只是个镜像仓库,所有在github上提交的issue和代码都会被一个机器人搬运到Gerrit上。
而且Go对提交代码的要求是必须关联一个issue,于是我就提了一个,自问自答了属于是。
描述了一下遇到的问题,但隔天被一位大佬认为是重复问题,并且关闭了这个issue
但我点进去仔细看了下,和我说的应该没有关系,他们讨论的是单测超时不生效的问题,于是我狡辩了一下。
果然狡辩是有用的,另一位大佬同意我的观点,于是我给他点了个赞,但他也指出我的代码存在问题。
下面进入今天的正题,为了便于讲解,我先把有问题的代码段摘出来:
func (b *B) launch() {
...
// n(int64)可能会溢出
n = goalns * prevIters / prevns
...
}
既然知道n会溢出,还不简单?加个判断就完了。

