Zen Go(口袋版)

预期将开始“ Golang开发人员”课程,我们准备了一个有用的小注释的翻译。




编写简单,易读且易于维护的Go代码的十个技术提示。作为GopherCon Israel 2020的一部分提交

每个包装只有一个目的。


正确设计的Go软件包应该仅实现一个想法,并引入一系列相关行为。一个好的Go软件包以一个好名字开始。尝试使该名称简短地表示您的软件包,仅用一个词就可以说明其提供的内容。

显式错误处理


可靠的程序由处理错误的元素组成,然后才可以将其击中。if err!= Nil {return err}的冗长性是通过对在可能出现错误的地方进行仔细处理的重要性来证明的。紧急和恢复也不例外;不应以这种方式使用它们。

防止深度嵌套并返回


每次缩进时,您都会在程序员的思维栈中增加一个条件,从而占用其短期记忆中7±2个插槽之一。避免多级填充控制流。代替深度嵌套,使用边界运算符将成功的代码路径保持在尽可能左的位置。

并发给调用者


让调用者选择他要异步运行您的库还是函数,而不是强加给他。如果您的库使用多线程,则应透明进行。

在启动goroutine之前,请先询问何时停止。


戈鲁廷人有资源;锁,变量,内存等。释放这些资源的最可靠方法是停止具有它们的goroutine。

避免包级属性


通过提供类型需要的依赖项作为此类型的字段,而不是使用包变量,以争取透明性,减少连接性并避免可怕的远程操作。

简单很重要


简单不是原始性的同义词。简单并不意味着不完整,而是意味着可读性可维护性如果您有很多选择,请始终倾向于最简单的解决方案。

编写测试以捕获您的包API的行为。


无论您是从测试开始还是结束,是争取实现100%的测试覆盖率,还是对必要的最低要求感到满意-不管这一切,软件包的API都是您与用户的合同。测试是对这些合同明确说明的保证。确保测试用户可以观察和依赖的行为。

如果您觉得有些慢,请首先使用基准进行验证。


许多以可持续发展为名的危害可持续发展的罪行。优化破坏了抽象,暴露了内部并紧密地结合在一起。如果您决定承担此负担,请确保有真正的理由。

适度是美德


使用goroutines,通道,锁,接口,按比例嵌入。

支持事项


清晰度,可读性,简单性是可持续性的所有方面。离开后是否可以支持您的努力工作?今天您能做什么以使明天成功的人生活更轻松?



了解有关该课程的更多信息。



All Articles