文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Go 语言代码风格规范-概述篇

2024-12-01 02:08

关注

Google 开源的 Google Style Guides (​https://google.github.io/styleguide/​)为多种编程语言提供了风格规范,包括 C++、Java、Python、JavaScript 等。在 2022 年 11 月,Go 语言风格规范(​https://google.github.io/styleguide/go/index)也终于得到开源。

如果你所在的团体还未形成一套系统的 Go 风格规范,不妨参考这份指南。

本公众号将持续更新该规范的中文译本。本文以下内容将是该系列的第一部分,即【概述篇】。

关于

Go 语言风格规范和附录文档整理了当前编写易读且正宗的 Go 的最佳方法。遵循编程指南不是绝对的,因为这些文档不可能面面俱到。我们的目的是尽可能减少编写可读性 Go 代码试错成本,新手们可以避免常见错误。这份规范还为那些在 Google 内部 Go 代码审查的人提供统一的风格指导。

文档

链接

主要受众

规范的

权威的

指南

​https://google.github.io/styleguide/go/guide​

所有人



决策

​https://google.github.io/styleguide/go/decisions​

代码可读性审查者



最佳实践

​https://google.github.io/styleguide/go/best-practices​

任何感兴趣的人



文档

1.【指南篇】概述了 Google Go 代码风格的基础。该文档是权威的,并用作【决策篇】和【最佳实践篇】中建议的依据。

2.【决策篇】是一个更详细的文档,它总结了关于特定风格点的决策,并适当地讨论了这些决策背后的原因。

这些决策可能会因为新数据类型、新语言特性、新标准库或新的模型而改变,但我们并不需要 Google 的 Go 程序员与该文档实时一致。

3.【最佳实践篇】记录了一些随着时间的推移而演变的模式,这些模式解决了常见问题,易于阅读,高鲁棒性也满足了代码可维护性要求。

这些最佳实践并不权威,但我们鼓励 Google 的 Go 程序员尽可能使用它们,以保持代码库的统一。

这些文档的目的:

非这些文档的目的:

各 Go 程序员之间,以及各团队的代码库之间总会存在差异。然而,为了符合 Google 和 Alphabet 的最大利益,我们的代码库尽可能得保持一致,因此,请自由地对你认为合适的编码风格进行改进,发现不符合风格规范的行为时,你也不需要过于吹毛求疵。特别是,这些文档可能会随着时间而改变,它不应该是导致现有代码库需要额外改动的理由;使用最新的最佳实践去编写新代码就足够了,随着时间的推移这部分内容就已经被解决了。

重要的是要认识到代码风格问题本质上是个人的,并且总是存在固有的权衡。这些文档中的大部分指导都是主观的,但就像gofmt一样,它们提供的统一性具有重要价值。因此,这些编码风格建议不会在未经适当讨论的情况下修改。我们鼓励 Google 的 Go 程序员遵循这些编程风格规范,即使他们可能对某些内容并不同意。

定义

整个代码风格系列文档中使用的一些词语,定义如下

Canonical(权威的):建立规范且持久的规则。

在这些文档中,“权威的”用于描述被认为是所有代码(旧的和新的)都应该遵循的标准,并且语句不会随着时间的推移而发生重大变化。权威的文档中的原则应该被代码作者和审查人理解,权威的文档中包含的所有内容都必须达到高标准。因此,与非权威的文档相比,权威的文档通常更短,并且规定的代码风格元素也更少。

https://google.github.io/styleguide/go#canonical

Normative(规范的):旨在建立一致性。

在这些文档中,“规范的”用于描述 Go 代码审查者都同意的代码风格元素,以确保他们在提供建议、术语和理由时能保持一致。这些风格元素可能会随着时间的推移而发生变化,这些文档将反映这些变化,以便代码审查者可以保持一致与最新。Go 代码开发者不用熟悉这些规范性文档,但这些文档应该被代码审查者用作可读性审查的参考。

https://google.github.io/styleguide/go#normative

Idiomatic(正宗的):常见且熟悉的。

在这些文档中,“正宗的”用于指代 Go 代码中普遍存在的东西,并已成为一种易于识别的熟悉模式。一般而言,如果两种模式在上下文中起到相同的目的,那么正宗的模式应该优先于非正宗的模式,因为这是代码读者最熟悉的模式。

https://google.github.io/styleguide/go#idiomatic

附加参考

本指南假定读者熟悉 Effective Go(​https://go.dev/doc/effective_go),因为它为整个 Go 社区的 Go 代码提供了一个共同的基线。

下面是一些额外的资源,供那些希望自学 Go 代码风格的人,和为代码审查者提供更多能使用的评论意见依据链接。我们并不期望 Go 代码可读性的参与者熟悉这些资源,但他们可能会作为代码可读性审查的背景出现。

外部参考

相关的“厕所测试“文档

额外的外部著作

来源:Golang技术分享内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯