GO之禅:编写简单、可读、可维护的GO代码的十个经验

1.每个package实现单一的目的

可以把package名称想象成一个升降梯,用一个词来描述package的内容;

可以先用xmind把package名称规划,然后把各种独立的业务单独成package,不用害怕package过多,分成逻辑块的代码只需要关注自己逻辑部分的package

2.显示处理错误

错误if err!= nil {return err} 可能冗长,但是出现问题时,能够准确定位问题更值得推崇;

panic和recover也不例外,确保错误溢出不影响程序运行是多么重要

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

非常复杂多余的if循环,只能加深对程序的憎恶程度;尽早的处理异常场景返回,是不可多得的方式

4.让调用者选择并发

go优秀的并发技能,不使用就好比有枪不用还使用棍棒;如果你的库使用了并发,需要处理好并发的同步和并发的异常

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

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

永远不要觉得交给系统的gc就完事了,得清楚每个goroutine的停止过程以及善后处理

6.避免package级别的状态

如果出现重复引用,会出现耦合和诡异的问题

7.简单,可维护性很重要

简单不意味着粗糙,而是可读性和可维护性;

如果可以选择,请遵循比较简单的解决方案;可以随着业务的升级去进行迭代升级;

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

8.编写测试所用package api的行为

确保测试了用户可以观察和依赖的行为

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

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

10.节制是一种美德

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Chapter 8 Goroutines and Channels Go enable two styles of...
    SongLiang阅读 1,643评论 0 3
  • 开发go程序的时候,时常需要使用goroutine并发处理任务,有时候这些goroutine是相互独立的,而有的时...
    驻马听雪阅读 2,494评论 0 21
  • 孩子参加竞赛通知有些晚 昨晚好有精神三小时浅睡 六点没有刷牙送小孩离家 专车提前送达眼皮突然好重
    瑜伽散人阅读 143评论 3 7
  • 永远记住,别人对你的好!
    沉淀AQ阅读 279评论 0 1
  • 文/堇白 Part 1 “你想过没有,以后要娶一个什么样的女生?”下课后,我一边收拾书包一边回头问许遥。 我一直好...
    芍柚阅读 925评论 9 8