金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  423 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
# go不要导出channel

(金庆的专栏 2020.3)

导出 channel 的包都比较难用。平常也不会将接口设计成 channel.
以下摘自:https://studygolang.com/articles/12135?fr=sidebar

不要导出并发原语

Go 提供了非常易于使用的并发原语,这也导致了它被过度的使用。我们主要担心的是 channel 和 sync package 。有的时候我们会导出一个 channel 给用户使用。另外一个常见的错误就是在使用 sync.Mutex 作为结构体字段的时候没有把它设置成私有。这并不总是很糟糕,不过在写测试的时候却需要考虑的更加全面。

当我们导出 channel 的时候我们就为这个包的用户带来了测试上的一些不必要的麻烦。你每导出一个 channel 就是在提高用户在测试时候的难度。为了写出正确的测试,用户必须考虑这些:

    什么时候数据发送完成。
    在接受数据的时候是否会发生错误。
    如果需要在包中清理使用过的channel的时候该怎么做。
    如何将 API 封装成一个接口,使我们不用直接去调用它。
posted on 2020-03-10 15:58 金庆 阅读(364) 评论(0)  编辑 收藏 引用 所属分类: 3. Golang

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理