go doc: Document the default doc assumptions

xmjla07d  于 4个月前  发布在  Go
关注(0)|答案(5)|浏览(40)

一般来说,在所有的Go库中,有一些隐含的文档规则。正如@bradfitz所言:
未声明的假设是并发使用不安全,零值不可用,实现忠实地实现了接口,且只有一个非零且有意义的返回值。
这是一个非常重要的知识片段,我认为它应该被记录在某个地方。我不知道这个地方是否应该是“Effective Go”(特别是考虑到#28782),但感觉新人在开始浏览Go文档或编写Go代码之前应该了解这一点。

yacmzcpb

yacmzcpb1#

@davecheney的博客文章和演讲是这些资源的好来源。(我肯定还有其他资源,但他的首先出现在我的脑海中。)

u3r8eeie

u3r8eeie2#

请注意,尤其是Effective Go被提议冻结(#28782),所以这可能不是一个很好的位置。尽管如此,Tour、FAQ或How to Write Go Code似乎都是合理的候选者。

u7up0aaq

u7up0aaq3#

在未声明的情况下,假设事物不适合并发使用,零值不可用,实现应忠实地实现接口,并且***只有一个非零且有意义的返回值***。
当然,至少这两个假设需要被正式记录下来?最后一个尤其让我陷入了无尽的焦虑,因此即使我知道可能不需要检查nil和零值复合物的结果值,但我还是会这样做,只是为了确保准确性和我的理智。
特别是,如果官方文档明确指出nil错误期望一个非nil或非零值的复合结果,除非另有说明,我会感到非常欣慰。反之亦然;一个非nil错误期望一个零值结果,除非另有说明(尽管这个更容易直观理解,但看到它被正式记录下来仍然是一件好事)。

xxslljrj

xxslljrj4#

@Justin-Marks 哪里是存放这个文档的好地方?你在哪里会看到这个?谢谢。

gfttwv5a

gfttwv5a5#

我总是想引用默认情况下的“不适用于并发使用”的假设,每次都要花上十分钟左右的时间才能再次找到这里:)
既然 #61940 正在发生,我们正在获得像 https://go.dev/doc/modules/layout 这样的新有用的文档页面,我想应该很容易找到这个新页面的位置。
如果能就它的位置做出决定,我很乐意作为 CL 写一份初稿。一些想法:

  • 我更倾向于避免 FAQ,因为它很长,而这个新页面可能会有很多文字。
  • 大多数 Go 用户在使用 Go 一段时间后不会查看教程,所以这也感觉不太对。
  • https://go.dev/doc/code 也感觉像是一个介绍性文档,而“隐式 godoc 假设”更像是参考页面。
  • https://go.dev/doc/comment 感觉合适,或许可以作为一个新的顶级部分,如“除文档注解外需要假设的内容”。
  • 如果我们认为这更多是关于 Go API 设计而不是关于 godoc 注解,我们还可以考虑类似 /doc/api 的东西。

相关问题