Go 服务开发高手课
徐逸
头部大厂资深 Go 技术专家、前腾讯资深工程师
1096 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 17 讲/共 28 讲
开篇词 (1讲)
Go 服务开发高手课
15
15
1.0x
00:00/00:00
登录|注册

16|目录规范:几万行的大文件,如何重构目录结构?

你好,我是徐逸。
上节课我们学习了如何拆分项目,不过对于复杂系统来说,即便拆分了项目,每个子项目里的文件庞大且复杂,管理和维护都非常困难。这时候我们就需要学会如何抽丝剥茧,为这样的文件建立一个合理的目录结构。
今天我就用分层架构的思想,带你将一个包含订单、商品、用户业务逻辑,有好几万行代码的大文件,一步步重构成一个合理的项目目录结构。
图1 逻辑复杂的大文件 main.go
假如现在产品提了个需求,在获取用户订单的时候,需要将订单涉及的商品信息一起返回给前端展示。
为了找到修改点,我们需要从几万行代码的大文件里面,找到获取订单逻辑。这是一个效率非常低的事。我们要么从 main.go 文件的开头,一行行浏览代码,找到获取订单逻辑。要么通过 order 关键词进行搜索。但对于有几万行代码的文件来说,可能会搜索出来大量的 order 关键词,需要一个个去辨别。
有什么方法能快速定位到订单获取业务逻辑呢?

三层目录结构:数据访问逻辑复用

我们可以把接口里面的业务逻辑从 main.go 文件拆出来,并把业务逻辑按业务功能归类到一个个文件里,比如下面的 order_handler.go、product_handler.go 文件。再将这些文件放到 handler 目录中。
.
├── go.mod
├── go.sum
├── handler
│ ├── init.go
│ ├── order_handler.go // 订单逻辑
│ ├── product_handler.go // 商品逻辑
│ └── user_handler.go // 用户逻辑
└── main.go
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. 通过分层架构的思想,将一个包含订单、商品、用户业务逻辑的大文件重构成一个合理的项目目录结构,提高代码管理和维护效率。 2. 采用三层目录结构,将业务逻辑按功能归类到不同文件,并放置到handler目录中,使得代码定位和维护更加高效。 3. 避免业务逻辑重复,将从商品表查询商品信息的逻辑下沉,抽象出一个数据访问层,专门负责数据库等外部存储交互以及所有表的增删改查。 4. 经典的后端三层架构思想,包括Controller层、Service层和DAO层,有助于提高代码的可维护性和可扩展性。 5. 通过四层目录结构,将商品信息缓存读写的逻辑放在一个service目录,实现业务逻辑的复用,避免代码逻辑重复. 6. 项目目录结构对于一个项目,只有一个应用程序的情况,基本够用,但在一个项目存在多个应用程序时,需要考虑如何组织项目结构. 7. 通过合理的目录规范和架构设计,可以提高代码的可读性、可维护性和可扩展性,从而更好地应对复杂系统的开发和维护挑战. 8. 重构后的目录结构反映了传统MVC三层架构和经典的后端三层架构思想,为项目的开发和维护提供了良好的指导和实践经验. 9. 通过抽丝剥茧,建立合理的目录结构,可以提高代码的组织性和可维护性,为复杂系统的开发和维护提供有效的解决方案.

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 服务开发高手课》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部