go 代码评审常见问题

作者: 空之古城 | 来源:发表于2018-06-28 23:12 被阅读7次

该页面收集了对 Go 进行代码评审时的常见评论和其内涵,利用它们可以做到言简意赅。注意这是常见错误的清单,而不是风格指南。您可以将其视为Effective Go的补充。

  • Gofmt
  • Comment Sentences
  • Contexts
  • Copying
  • Crypto Rand
  • Declaring Empty Slices
  • Doc Comments
  • Don't Panic
  • Error Strings
  • Examples
  • Goroutine Lifetimes
  • Handle Errors
  • Imports
  • Import Dot
  • In-Band Errors
  • Indent Error Flow
  • Initialisms
  • Interfaces
  • Line Length
  • Mixed Caps
  • Named Result Parameters
  • Naked Returns
  • Package Comments
  • Package Names
  • Pass Values
  • Receiver Names
  • Receiver Type
  • Synchronous Functions
  • Useful Test Failures
  • Variable Names

Gofmt

在代码上运行 gofmt 以自动修复大多数机械样式问题。几乎所有 Go 代码都在使用 gofmt。本文档的其余部分讨论非机械式样点。

另一种方法是使用 goimports,这是 gofmt 的超集,它根据需要额外添加和删除导入行。

Comment Sentences

参考effective go 文档,对声明的注释应该是完整的句子,即使这看起来有点多余。这种方法使通过 godoc 提取文档时格式良好。评论应以所描述事物的名称开始,并以句点结束:

// Request represents a request to run a command.
type Request struct { ...

// Encode writes the JSON encoding of req to w.
func Encode(w io.Writer, req *Request) { ...

请注意,除句号之外还有其他符号可以作为句子的有效结尾(比如!、?)。

Contexts

context.Context 类型的值包含跨越 API 和进程边界的安全证书,跟踪信息,截止日期和取消信号。 Go 程序将整个函数调用链中的传入 RPC 和 HTTP 请求显式地传递给传出请求。

大多数使用 Context 的函数都应该接受它作为第一个参数:

func F(ctx context.Context, /* other arguments */) {}

一个永远不需要特定请求的函数可能会使用 context.Background(),但默认情况下应该传一个 Context; 只有你有充分的理由说明替代方案又问题,才能使用 context.Background()。

不要将 Context 添加到结构类型中,而是将 ctx 参数添加到需要传递该类型的每种方法上。唯一例外的情况是方法的签名必须与标准库或第三方库中的接口相匹配。

不要自定义 Context 类型,也不要扩展 Context 接口之外的方法。如果你有应用数据需要传递,利用参数、接收器、全局变量,如果只能通过 Context 传,使用 Context Value。

Context 是不可变的,因此可以将相同的 ctx 传递给多个调用,让它们共享相同的截止日期,取消信号,安全证书,父级跟踪等的。

(未完结,持续更新中)

参考文献

相关文章

  • go 代码评审常见问题

    该页面收集了对 Go 进行代码评审时的常见评论和其内涵,利用它们可以做到言简意赅。注意这是常见错误的清单,而不是风...

  • 2018-08-14 软件需求评审

    • 同行评审基本概念 • 同行评审基本流程 • 同行评审实战 • 同行评审常见问题 同行评审的基本概念 • 同行评...

  • 66 | 架构老化与重构

    架构功夫都在平常反思与打磨 常见问题:1)缺乏架构评审,2)代码质量缺乏持续关注;3)需求理解不深刻4)赶时间补丁...

  • 代码评审【未整理】

    代码评审 代码评审也称代码复查,是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。 代码评审应该与...

  • 代码评审

    每个版本的代码开发后,行方都要进行一次代码评审,通过开发负责人讲解自己编写的代码逻辑,评审人员提出自己的看法,指出...

  • SOLID Go Design - Go语言面向对象设计

    代码评审 为什么要代码评审?如果代码评审是要捕捉糟糕的代码,那么你如何知道你审查的代码是好的还是糟糕的? 我在找一...

  • 面试常见问题

    英语面试常见问题 Q: Can you sell yourself in two minutes? Go for ...

  • iOS代码评审

    1.代码评审清单 (1).架构/设计/常规 1).单一职责原则 这是经常被违背的原则。一个类只能干一个事情,一个方...

  • iOS 代码评审

    1、CodeReview Code Review 中文应该译作 “代码审查” 或是 “代码评审”,这是一个流程,当...

  • 代码审核

    引用: iOS - CodeReview 代码评审

网友评论

    本文标题:go 代码评审常见问题

    本文链接:https://www.haomeiwen.com/subject/zefoyftx.html