求助:前辈们可以分享一下你们觉得比较良好写 golang 代码的习惯吗

2024-09-29 21:25:10 +08:00
 lllsj
各位前辈你们好,我最近刚入职一个公司实习,公司这边用的都是 Golang ,我也是刚上手没多久,请问各位可以分享一下平时写 go 比较好的习惯吗,我想学习学习,不胜感激
2932 次点击
所在节点    Go 编程语言
16 条回复
securityCoding
2024-09-29 21:29:47 +08:00
kiss
R4rvZ6agNVWr56V0
2024-09-29 21:32:14 +08:00
老生常谈,SOLID 原则
konakona
2024-09-29 21:32:26 +08:00
我推荐去了解 Go 语言研发作者团队的构想,你就会发现他们压根没有你的这些考虑,一切从简出发。
poltao
2024-09-29 21:57:53 +08:00
不用考虑太多,公司代码跟着存量的代码保持已有代码风格就可以了,重要的是要多理解业务,便于以后出去面试吹牛。最后如果未来面试也是 golang 方向的话可以多看看 golang 的八股文,了解下异步编程和 GMP 模型,有时间理解下 RPC 框架,看看 golang 常用的 etcd, mq 等微服务组件足矣。
povsister
2024-09-29 21:59:46 +08:00
go 的风格就是没有统一风格。跟项目风格,否则你水平比项目高或者低写的都只会很憋屈。
lllsj
2024-09-29 22:12:18 +08:00
@poltao #4 嗯嗯,好的感谢
lllsj
2024-09-29 22:13:07 +08:00
@povsister #5 确实,我感觉我接手的代码风格就很乱,跟我同批的实习生他们组的代码写的就很规范
dododada
2024-09-30 11:18:07 +08:00
不要用魔法变量, 能跑就行
uds9u32br
2024-09-30 13:19:03 +08:00
不要有什么设计是最好的,除非必要,否则应该禁用设计模式。
试着模仿标准库的代码风格吧。
chouvel
2024-09-30 14:07:42 +08:00
@poltao 很认同。感觉可以思维也可以应用在其他工作上。
ryan961
2024-09-30 15:32:28 +08:00
lveye
2024-09-30 16:08:23 +08:00
比如一些容易踩坑的点:

timer := time.NewTimer(time.Minute)
defer timer.Stop()

----
for i := range array {
i := i
go func() {
fmt.Println(i)
}()
}

----
resp, _ := http.Post(urlStr, "application/x-www-form-urlencoded", body)
defer func() {
_ = resp.Body.Close()
}

----
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()

go func(i int)
// do something
select {
case <- ctx.Done():
fmt.Println(i)
}
}(i)
Biem
2024-10-01 15:54:42 +08:00
go 的风格就是 go ,just go ,let it go ,越简单越好,只要不碰 unsafe ,能跑起来就是好代码。然后节省下来过度设计和思考的时间去体验生活。
windcode
2024-10-14 12:02:01 +08:00
可以阅读一些开源项目的「开发者指南」部分,已经帮你总结好了优秀的编码规约:
- 代码规约: https://www.kusionstack.io/zh/karpor/developer-guide/conventions/code-conventions
- 测试规约: https://www.kusionstack.io/zh/karpor/developer-guide/conventions/test-conventions
- Commit 规约: https://www.kusionstack.io/zh/karpor/developer-guide/conventions/commit-conventions
lllsj
2024-10-14 23:08:25 +08:00
@windcode #14 好的,感谢您
qloog
2024-10-18 10:55:05 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1076928

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX