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,锁,接口,嵌入。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,951评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,606评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,601评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,478评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,565评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,587评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,590评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,337评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,785评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,096评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,273评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,935评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,578评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,199评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,440评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,163评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,133评论 2 352

推荐阅读更多精彩内容

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