前言
最近一直在研究 GoFrame 框架,经过一段时间的使用、总结、思考,发现确实不失为一款非常值得使用的企业级开发框架。
在我初识GoFrame教程后,曾整理过一篇文章: 非常适合PHP同学学习的GO框架:GoFrame,有兴趣的同学可以阅读一下。
今天重点讲一下我使用GoFrame的代码优化之旅。
核心重点
GoFrame几乎封装了所有能封装的东西,而我们需要做的就是在框架的基础上约定好自己项目的开发规范。
一定要遵守统一的规范!
一定要遵守统一的规范!
一定要遵守统一的规范!
GoFramegconvstructgconv
ScanMap/StructGoFrameDAOModel/DAO
以上两个部分是重中之重,建议大家好好研究。
类型转换 和 数据库ORM 也是我下面优化代码的重要参考。
优化前
这种重复定义让我很难受:
优化后:
去掉定义map:
可以这么写的原因
gome.Category.Get(ctx, pid) 返回的是 CategoryRes结构体:
进一步优化 批量写入
Data()
更优雅的写法如下
可以向上滑,看看优化前的代码是怎么写的。
优化后的代码完全实现了优化代码前的功能,且性能更好,因为使用了批量插入。
总结
gconv
不要像下面这样写代码!NO!
要有这种优化代码的意识,当我们意识到重复定义时,就一定有办法优化。
当我们意识到逻辑混乱时,就一定有办法优化结构,混乱的逻辑往往是设计的不合理导致的。