Uber 开放公司内部《Go 语言风格指南》
Uber 近日开放了其公司内部使用的《Go 语言风格指南》。
Uber 介绍,“风格”也就是支配我们代码的惯例,该指南出现在 Uber 公司内部是为了使代码库易于管理,同时让工程师有效地使用 Go 语言特性。
文档中详细描述了在 Uber 编写 Go 代码的注意事项,具体列出来的是“Dos and Don'ts of writing Go code at Uber”,也就是不该怎样写,而应该怎样写 Go 代码。
其中许多约定是 Go 的通用准则,而其它准则则参考了外部资源:
指南涵盖了“指导方针”、“性能”、“风格”与“模式”几个大模块,下设各项具体的注意事项:
以“Defer to Clean Up(使用 defer 清理)”小节为例,该指南这样描述:
使用 defer 清理资源,例如文件和锁。
Bad | Good |
---|---|
p.Lock() if p.count < 10 { p.Unlock() return p.count } p.count++ newCount := p.count p.Unlock() return newCount // easy to miss unlocks due to multiple returns | p.Lock() defer p.Unlock() if p.count < 10 { return p.count } p.count++ return p.count // more readable |
defer 的开销非常小,只有在可以证明函数执行时间处于纳秒级的程度时,才应避免使用。使用 defer 可以获得更好的代码可读性,而它的开销相比来说可以忽略不计。对于具有更多更大内存访问的方法来说 defer 会显得更加重要。
详情查看该指南:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
OSChina 周日乱弹 —— 我光起床就用尽了力气
Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Salut D'amour》 - David Garrett 《Salut D'amour》 - David Garrett 手机党少年们想听歌,请使劲儿戳(这里) @达尔文:噢 不是假期么! 假期并不适合敲代码, 上班也不行, @渣哇:掐指一算今天不适合敲代码 这个周末 应该休息的时候, 让我上班, “我光起床就用尽了力气。” 年轻人越不努力, 中年人就越开心 @Tumblr:年轻人越不努力,中年人就越开心 你高兴个什么劲儿, 你自己工作也拖延个不停, 告诉你个改善这种状态的办法, @FalconChen:每天一片西瓜??,幸福指数提高了10% 你问我为什么是西瓜? 为什么不是西红柿…… 因为我是程序员啊, 程序员就不买西红柿, 西红柿是买西瓜的条件。 不过最近程序员的 幸福指数又降低了, 因为在家的时候不能远程控制电脑了, 必须去单位加班了。 因为远程登陆的软件出问题了。 @OSC首席摸鱼官:teamviewer已经被我卸载 teamviewer被入侵了, @熊猫rrr:TeamViewer据称“被入侵”事件的研...
- 下一篇
【一周】Vue 3 | Java 14 | Unix之父密码被破解 | Android之父“带鱼”手机
回顾一周社区热门资讯 第【四十三】期:20191005-20191011 点击相应标题,跳转阅读全文。 Chrome 将不再允许 https:// 页面加载 HTTP 资源 安全页面加载不安全的 HTTP 子资源很常见,这些子资源中的许多默认情况下都是被阻止的,但有些会作为图像、音频和视频或“混合内容”潜入,混合内容可能会使用户面临风险,比如脚本、iframe 与媒体文件。 SQLite 3.30.0 发布,世界上使用量最大的数据库引擎 SQLite 是一个 C 实现的 SQL 数据库引擎,它的特点是小型、快速、自包含、高可靠性和功能齐全。SQLite 嵌入在所有手机和大多数计算机中,也捆绑在为数众多的其它应用中,是世界上使用量最大的数据库引擎。 Vue 3 源码公布 Lua 5.4.0 Beta 发布:采用新一代的垃圾回收机制 Lua是一个小巧的脚本语言,设计目的是为了嵌入应用中,从而为应用提供灵活的扩展和定制功能。Lua 脚本可以很容易地被 C/C++ 代码调用,也可以反过来调用 C/C++ 的函数,这使得 Lua 在应用中可以被广泛应用,不仅仅作为扩展脚本,也可以作为普通的配置文...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker快速安装Oracle11G,搭建oracle11g学习环境