Go命名规则【1】文件命名的“潜规则”

cron下面有一个刷新缓存的文件,我原来是refresh_cache.go,标准写法是这样的么?还是refreshCache.go?还是refresh-cache.go

在 Go 语言中,文件命名有一套非常明确的"潜规则"。对于你的 refresh_cache.go,建议如下:

1. 结论:首选 refresh_cache.go (下划线命名)

在 Go 项目中,小写 + 下划线 是最标准、最常见的写法。

  • refresh_cache.go:推荐。符合 Go 社区主流习惯,清晰易读。
  • refreshCache.go:不推荐。Go 的文件名几乎不使用驼峰式(驼峰通常只用于变量、结构体和函数名)。
  • refresh-cache.go:不推荐。中划线在某些构建工具或特定场景下可能会引起误解,Go 官方标准库中极少见到。

2. 为什么选下划线?

Go 的源码(标准库)几乎统一使用下划线命名法。

  • 例如:runtime/internal/atomic/atomic_test.go,net/http/internal/chunked_test.go。
  • 系统适配性:下划线在所有操作系统(Windows, Linux, macOS)的文件系统中兼容性最好,且不会因为大小写敏感问题导致编译失败。

3. 更进阶的"Go 味道"写法

如果你的 cron 目录下有很多文件,Go 开发者有时会追求更短的命名,或者根据功能命名:

  • 如果该目录下只有缓存相关的定时任务:可以直接叫 cache.go。
  • 如果是一个具体的清理动作:可以叫 clear_cache.go。

4. 目录组织建议

既然你在做微服务,cron 目录下的代码组织通常有两种风格:

  • 风格 A(平铺式):

    复制代码
    internal/cron/
    ├── refresh_cache.go
    ├── sync_order.go
    └── scheduler.go  // 用于注册所有定时任务的入口
  • 风格 B(模块化):如果某个任务特别复杂。

    复制代码
    internal/cron/
    └── cache_task/
        ├── handler.go
        └── loader.go

总结

直接把文件名定为 refresh_cache.go 即可。

另外提醒一点:在 refresh_cache.go 内部,定义的函数名应该是驼峰式的,例如:

复制代码
package cron

// 函数名要大写驼峰(如果要被外面调用)
func RefreshCacheHandler() {
    // 调用 logic 层的代码
}
相关推荐
我不会起名字32215 小时前
微服务链路超时怎么设:逐层收敛的 4 条规则与 1 个反例
微服务·go·超时·熔断
我的div丢了肿么办21 小时前
go语言安装包详细讲解
后端·go
我不会起名字3221 天前
Go 写 Kafka 消费者:sarama 的 3 个坑与优雅退出写法
kafka·消息队列·go·sarama
我不会起名字3221 天前
Redis 从 0 到 1(十一):缓存穿透/击穿/雪崩三连击,Go 3 套防御代码
redis·缓存·go·布隆过滤器·雪崩
bug菌2 天前
一个周末就想把短链服务推到 10 万 QPS,真能靠加 Redis 做到吗?
java·redis·go
tachibana22 天前
Go 语言里的 Context 是什么?
开发语言·后端·golang·go·语言
Linux实战笔记2 天前
sync.Mutex还是Channel?Go并发场景选型对比与goroutine泄漏实战
go·channel·sync.mutex·goroutine泄漏·race detector
wflynn2 天前
GitHub 今日推荐|open_scion:为AI代理设计的并发版本控制
git·开源·go·github·agent·coding-agents
Thinker QAQ2 天前
并发编程(九):BlockingQueue 与 Channel——语言层的原子性、可见性与有序性
java·python·go·并发编程·channel·blockingqueue·message passing
茉莉玫瑰花茶3 天前
GO [ 标准库 · unsafe ]
后端·go