内容简介:编写简单、可读、可维护 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 代码的十个工程经验》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- [译] Go 之禅:Dave Cheney 大神告诉你编写简单、可读、可维护 Go 代码的十个工程经验
- AIOps大神之路
- 大神碉堡!99 行代码实现的神奇效果
- 像大神一样写代码之代码质量控制
- 听大神聊FPGA设计:豁然开朗
- 在哪里能找到优秀的golang大神
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Design Accessible Web Sites
Jeremy Sydik / Pragmatic Bookshelf / 2007-11-05 / USD 34.95
It's not a one-browser web anymore. You need to reach audiences that use cell phones, PDAs, game consoles, or other "alternative" browsers, as well as users with disabilities. Legal requirements for a......一起来看看 《Design Accessible Web Sites》 这本书的介绍吧!