Golang Go语言中 求助前辈们可以分享一下你们觉得比较良好的编码习惯吗
各位前辈你们好,我最近刚入职一个公司实习,公司这边用的都是 Golang ,我也是刚上手没多久,请问各位可以分享一下平时写 go 比较好的习惯吗,我想学习学习,不胜感激
Golang Go语言中 求助前辈们可以分享一下你们觉得比较良好的编码习惯吗
kiss
更多关于Golang Go语言中 求助前辈们可以分享一下你们觉得比较良好的编码习惯吗的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
老生常谈,SOLID 原则
我推荐去了解 Go 语言研发作者团队的构想,你就会发现他们压根没有你的这些考虑,一切从简出发。
不用考虑太多,公司代码跟着存量的代码保持已有代码风格就可以了,重要的是要多理解业务,便于以后出去面试吹牛。最后如果未来面试也是 golang 方向的话可以多看看 golang 的八股文,了解下异步编程和 GMP 模型,有时间理解下 RPC 框架,看看 golang 常用的 etcd, mq 等微服务组件足矣。
go 的风格就是没有统一风格。跟项目风格,否则你水平比项目高或者低写的都只会很憋屈。
#4 嗯嗯,好的感谢
#5 确实,我感觉我接手的代码风格就很乱,跟我同批的实习生他们组的代码写的就很规范
不要用魔法变量, 能跑就行
不要有什么设计是最好的,除非必要,否则应该禁用设计模式。
试着模仿标准库的代码风格吧。
很认同。感觉可以思维也可以应用在其他工作上。
比如一些容易踩坑的点:
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)
go 的风格就是 go ,just go ,let it go ,越简单越好,只要不碰 unsafe ,能跑起来就是好代码。然后节省下来过度设计和思考的时间去体验生活。
可以阅读一些开源项目的「开发者指南」部分,已经帮你总结好了优秀的编码规约:
- 代码规约: 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
#14 好的,感谢您
在Go语言(Golang)编程中,培养良好的编码习惯对于写出清晰、可维护的代码至关重要。以下是一些值得遵循的编码习惯:
-
遵循官方命名规范:变量名、函数名应使用驼峰命名法(camelCase),类型名使用大写驼峰命名法(PascalCase)。保持命名清晰且具描述性。
-
明确职责的单一函数:每个函数应尽量只做一件事,保持函数短小精悍,易于理解和测试。
-
使用明确的错误处理:不要忽视错误处理,应显式检查并处理每个可能的错误。使用
if err != nil
模式,并在必要时添加上下文信息。 -
格式化代码:使用
gofmt
工具自动格式化代码,保持代码风格一致。 -
注释清晰:为复杂的逻辑、算法或代码块添加注释,但避免过度注释。好的代码应尽可能自解释。
-
编写单元测试:为关键功能编写单元测试,确保代码的正确性和稳定性。使用
go test
命令运行测试。 -
避免全局变量:尽量使用局部变量和参数传递数据,减少全局变量的使用,以降低代码的耦合度。
-
遵循Go的并发模型:利用Go的goroutines和channels进行并发编程,但要小心避免数据竞争和死锁。
遵循这些编码习惯,将有助于提高你的Go代码质量,使其更加健壮、易于维护和扩展。希望这些建议对你有所帮助!