Go 之禅:大神 Dave Cheney 总结的编写简单、可读、可维护 Go 代码的十个工程经验

栏目: IT技术 · 发布时间: 5年前

内容简介:编写简单、可读、可维护 Go 代码的十个工程经验,大神 Dave Cheney 于 2020/02/03 在精心设计的 Go 软件包提供了一个单一的想法,以及一系列相关的行为。一个好的 Go 软件包首先选择一个好名字。您可以将 package 的名称想像成一个升降梯,用一个词来描述 package 的内容。健壮的程序由处理错误的案例片段组成。

Go 之禅

编写简单、可读、可维护 Go 代码的十个工程经验,大神 Dave Cheney 于 2020/02/03 在 GopherCon Israel 2020 的演讲。

每个 package 实现单一的目的

精心设计的 Go 软件包提供了一个单一的想法,以及一系列相关的行为。一个好的 Go 软件包首先选择一个好名字。您可以将 package 的名称想像成一个升降梯,用一个词来描述 package 的内容。

显式处理错误

健壮的程序由处理错误的案例片段组成。 if err!= nil {return err} 可能冗长,但在发生故障时刻意处理每个故障条件的价值远超其冗长。panic 和 recover 也不例外,它们并非打算以这种方式使用。

尽早返回,而不是使用深嵌套

每次缩进时,都会在 程序员 的堆栈中添加另一个先决条件,这会占用他们短期内存中的 7±2 个插槽之一。避免需要深缩进的控制流。与其深入嵌套,不如使用保护子句将成功路径保持在左侧。

让调用者选择并发

让调用者选择是否要异步运行您的库或函数,不要强加于他们。如果您的库使用并发,则应透明地进行。

在启动一个 goroutine 时,需要知道何时它会停止

Goroutines 会占用资源:锁,变量,内存等。释放这些资源的可靠方法是停止相应的 goroutine。

避免 package 级别的状态

通过提供类型需要的依赖项作为该类型上的字段,而不是使用包变量,来寻求明确的,减少耦合和诡异的问题。

简单很重要

简单性不是老练的代名词。简单并不意味着粗糙,而是可读性和可维护性。如果可以选择,请遵循较简单的解决方案。

编写测试以锁定 package API 的行为

不论您的 package API 是否是您与用户的合同,如果您要进行 100% 的测试覆盖率或希望减少测试范围,请先进行测试,再进行后续测试。测试是写入这些合同的保证。请确保测试了用户可以观察和依赖的行为。

如果觉得慢,首先编写 benchmark 来证明

以表现为名犯下了许多危害可维护性的罪行。优化会破坏抽象,暴露内部和紧密耦合。如果您选择承担这笔费用,请确保有充分理由这样做。

节制时一种美德

适度使用 goroutine,channel,锁,接口,嵌入。

可维护性

清晰,易读,简单是可维护性的所有方面。离开后,您可以努力维护的东西可以保留吗?您今天该如何做,才能使以后的人们变得更轻松?

原文链接: The Zen of Go

欢迎关注我的公众号:


以上所述就是小编给大家介绍的《Go 之禅:大神 Dave Cheney 总结的编写简单、可读、可维护 Go 代码的十个工程经验》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

为什么中国没出Facebook

为什么中国没出Facebook

谢文 / 凤凰出版社 / 2011-7-1 / 39.80元

《为什么中国没出Facebook》对互联网的游戏规则、市场、格局、模式及发展趋势等多方面进行了阐述,既勾画出了理想中的互联网生态及其本质,又联系中国实际,探讨了中国互联网行业的未来发展。《为什么中国没出Facebook》提出了在互联网成事应该符合的8条原则,比较了Facebook、MySpace、Twitter三种创新模式,指出了Web2.0平台时代新浪、腾讯、百度、搜狐等互联网巨头的未来方向,也......一起来看看 《为什么中国没出Facebook》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具