Go 进阶 · 分布式爬虫实战
郑建勋
Go 语言技术专家,《Go 语言底层原理剖析》作者
15839 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 58 讲
Go 进阶 · 分布式爬虫实战
15
15
1.0x
00:00/00:00
登录|注册

特别放送|回头看:如何更好地组织代码?

你好,我是郑建勋。
在利用 Go 语言进行系统开发时,相信你或早或晚都会思考这样一个问题:如何更好地组织代码?或者说如何更好地构建项目的目录结构?
这并不是一个容易回答的问题,因为这通常不会有标准的答案。开发者对 Go 语言和软件开发的理解不同、面临的业务场景不同,代码的组织方式也会截然不同。
然而,如果我们对这个问题不管不顾,会发现代码书写起来越来越别扭。代码越来越难做大的调整了。因此,在完成对爬虫系统的开发后,让我们重新来思考一下如何更好地组织代码。

按照功能划分组织代码

我们之前设计的爬虫系统有对代码进行组织吗?
当然是有的,依靠我们软件开发的经验,代码中有很多增加代码扩展性的设计。包括 Option 模式、大量使用接口解耦依赖、在 main 函数中统一注入依赖等等。从整体上来看,我们也使用了扁平化的目录结构,没有嵌套太深的层次结构。同时,为了便于对代码进行管理,我们根据功能对代码结构进行了划分。例如,auth 负责权限验证,collect 包用于网络爬取,storage 用于数据的存储。上面的这些设计保证了我们对这个爬虫系统仍然有较强的控制力。
通过功能对代码结构进行划分是一种比较常见的也比较容易想到的模式。但是在开发过程中,我们会遇到不少的难题,这些问题也存在于我们开发爬虫系统的过程中,比较严重的两个就是命名问题和循环依赖问题。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了在利用Go语言进行系统开发时,如何更好地组织代码的问题。作者首先讨论了按照功能、单体和层级划分组织代码的方式,并指出了这些方式存在的问题,如命名问题和循环依赖问题。随后,作者提出了按照领域驱动设计(DDD)组织代码的方法,介绍了DDD的核心思想和术语,以及其在软件设计中的应用。文章通过讨论不同的代码组织方式,引出了领域驱动设计的重要性和优势,为读者提供了对于如何更好地组织代码的思考和指导。 此外,文章还介绍了六边形架构和DDD的结合应用,以及在爬虫系统中如何使用六边形架构重构代码。通过讨论领域与子域、限界上下文、实体、值对象和聚合等概念,读者可以了解如何在具体项目中应用DDD的方法来组织代码,以及如何利用六边形架构解决之前面临的问题。 最后,文章还详细介绍了服务、仓储和服务串联业务逻辑的实际应用,通过具体的代码示例展示了如何在Go语言系统开发中应用DDD的方法来组织代码。整体而言,本文对于希望提升代码组织能力的开发人员具有一定的参考价值,为他们提供了深入浅出的领域驱动设计和六边形架构在实际项目中的应用指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 进阶 · 分布式爬虫实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • Realm
    文章中提供本项目的系统架构图,以及各模块之间的逻辑关联图,会让阅读代码体验更好.
    2023-02-14归属地:浙江
    5
收起评论
显示
设置
留言
1
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部