为什么你的 Go 代码被评审吐槽?effective-go 命名规范完整指南(变量名、Initialisms、包名一次讲透)

📅 2026/8/25 18:00:43
为什么你的 Go 代码被评审吐槽?effective-go 命名规范完整指南(变量名、Initialisms、包名一次讲透)
为什么你的 Go 代码被评审吐槽effective-go 命名规范完整指南变量名、Initialisms、包名一次讲透【免费下载链接】effective-goa list of effective go, best practices and go idiomatic项目地址: https://gitcode.com/gh_mirrors/ef/effective-go写 Go 代码时你是否总被 Code Review 吐槽命名不规范effective-go是社区公认的 Go 代码评审最佳实践清单官方 Effective Go 的补充本文把其中最高频的三大命名吐槽点——变量名、Initialisms 缩写词、包名——一次讲透帮你彻底告别低级命名问题。 快速上手先认识 effective-goeffective-go 收集了 Go 代码评审中最常见的意见和最佳实践。它只有一个核心文件仓库根目录的README.md全部规范都按主题分章节写在里面比如Variable Names、Initialisms、Package Names等。本地阅读可以先克隆仓库git clone https://gitcode.com/gh_mirrors/ef/effective-go下面直接拆解评审中最容易翻车的三个命名主题。 变量名规范作用域越小名字越短README.md的Variable Names章节给出了一条核心原则名字离声明越远就必须越有描述性。也就是说局部变量、循环下标、文件句柄这类短命变量1~2 个字母完全够用而包级变量、全局变量则需要完整、可描述的名字。作用域建议长度典型示例循环下标 / 句柄1 个字母i、r、f方法接收者1~2 个字母clClient、sServer局部变量简短c优于lineCountn优于itemCount包级 / 全局变量有描述性MaxRetryCount优于mr一个隐藏的连带收益来自Line Length章节很多过长需要折行的代码行罪魁祸首其实是太长的变量名——把名字改短折行问题自然就消失了。 Initialisms 规范缩写词要么全大写要么全小写Initialisms章节的规则一句话就能记住URL 只能写作URL或url永远不能写作Url。多个缩写连用时同理写作xmlHTTPRequest或XMLHTTPRequest。评审中最常见的缩写词错误对照表❌ 错误写法✅ 正确写法GetUrl、getUrlGetURL、getURLServeHttpServeHTTPappIdappIDMaxDbSizeMaxDBSize注意两个例外细节当ID表示身份证/标识符绝大多数场景时应写appID而不是appIdprotobuf 等工具生成的代码豁免此规则——人手写的代码标准更高但机器写的代码不较真。 包名规范拒绝 util 包拒绝复读机Package Names章节指出了两个典型问题避免无意义包名util、common、misc、api、types、interfaces这类名字不携带任何信息量评审必被点名。包名应该是简短、有业务含义的名词。避免包名复读调用方写代码时一定会带上包名前缀所以成员命名里不要再重复包名。以chubby包为例// 复读机写法调用方要写 chubby.ChubbyFile type ChubbyFile struct{ ... } // 推荐写法调用方写 chubby.File干净利落 type File struct{ ... }✍️ 高频附带吐槽点顺手一起改掉评审时经常被连坐的几个命名相关习惯都出自README.md的其他章节Mixed Caps混合大小写一律使用 camelCase。未导出的常量写作maxLength而不是MaxLength或MAX_LENGTH——即使其他语言习惯不同。Receiver Names接收者命名用类型名的 1~2 字母缩写如c代表 Client同一类型的所有方法保持一致不要用me、this、self这类面向对象语言的味道。Named Result Parameters命名返回值不要为了写 naked return 而给返回值命名——文档清晰度永远比省一两行代码更重要。Doc Comments文档注释所有导出的顶层名字都应有文档注释以名字开头、句号结尾的完整句子。✅ 提交前自查清单5 步消除命名吐槽运行gofmt建议在 IDE 中配置保存时自动格式化先消灭机械风格问题运行go vet ./...让工具替你抓低级错误对照上面的作用域—长度表格检查局部变量是否写得太长全局搜索Url、Http、Id等错误缩写统一改为URL、HTTP、ID检查项目里是否存在util、common包以及chubby.ChubbyFile式的复读命名。 一句话总结Go 社区对命名的要求可以浓缩为一句话短变量配短名长作用域配长名缩写要么全大要么全小包名别复读、别用 util。按 effective-go 的这几条规范走你的代码在评审中至少能少收一半的命名意见。想要逐条对照原文回看仓库根目录的README.md即可每个章节都附了对应场景的正反示例。【免费下载链接】effective-goa list of effective go, best practices and go idiomatic项目地址: https://gitcode.com/gh_mirrors/ef/effective-go创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考