Go with the Domain:用 Go 构建现代商业软件
298 页
Chinese
PDF
4.5

Go with the Domain:用 Go 构建现代商业软件

Go with the Domain:用 Go 构建现代商业软件

作者:

年份:

简介:

引言

《Go with the Domain: Building Modern Business Software in Go》一书(作者:Robert Laszczak、Miłosz Smółka,2021 年出版,共 298 页)并非又一本关于 Go 语法的教程。它是一本在 Go 生态系统中应用领域驱动设计(DDD)和整洁架构原则的实用指南。在出版之时,该书成为首批将领域驱动设计哲学与惯用 Go 语言系统性地结合起来,同时避免过度抽象和“过度工程”的著作之一。它面向那些已经使用 Go 编写代码,并希望从“仅仅能运行的代码”过渡到可维护、可测试且可扩展的商业应用程序的开发人员。

本书内容

本书围绕一个真实示例——订单管理系统展开。作者循序渐进地引导读者经历所有阶段:从识别限界上下文和建模领域事件,到实现仓储、服务和传输层(HTTP、gRPC、消息队列)。特别关注代码的惯用性:作者展示了如何使用 Go 接口定义端口和适配器,如何避免“贫血模型”,以及如何正确组织包结构以不破坏领域边界。每章都包含实际示例、图表以及“糟糕”与“优秀”代码的对比。

适合读者

  • Go 开发者:具有 1 年以上经验,希望深入架构层面。
  • 软件架构师:寻找在 Go 中实现 DDD 的具体模式。
  • 技术主管和团队领导:负责微服务设计。
  • 从其他语言(Java、C#)转向 Go,并希望在没有“重型框架”的情况下应用 DDD 的开发者。

读者将学到什么

  • DDD 基础在 Go 中的应用:实体、值对象、聚合、领域事件、仓储、工厂。
  • Go 中的整洁架构(六边形架构):如何分离领域、应用和基础设施。
  • 领域逻辑的测试:无需模拟,使用表格驱动测试和接口。
  • DDD 上下文中的事务处理和并发(工作单元模式)。
  • 通过端口-适配器(HTTP、gRPC、Kafka)与外部系统集成。
  • 在单体仓库和 Go 模块中的代码组织。
  • 领域中的错误处理:创建自定义错误类型、上下文相关错误。
  • 事件溯源和 CQRS——基础介绍及实现示例。

优势

  • 实用导向:书中的代码可直接适配到自己的项目中。
  • 惯用性:作者不强加 Java 风格,而是展示 DDD 在 Go 中“应有的样子”(小接口、组合、显式依赖)。
  • 结构清晰:每章末尾都有总结和“要点回顾”列表。
  • 强调测试:专门有一章讲解领域和基础设施的测试。
  • 与时俱进:本书使用了 Go modules、context.Context、middleware、泛型(尽管在 Go 1.18 发布之前出版,但作者给出了适配建议)。

推荐人群

本书是所有使用 Go 构建复杂商业系统(ERP、CRM、金融科技、物流、电商平台)的开发者的必读之作。无论您是刚开始引入 DDD,还是希望看到纯粹 DDD 与 Go 实用主义之间“黄金平衡点”的经验丰富的实践者,本书都将大有裨益。如果您厌倦了“上帝服务”,并希望编写易于根据新业务需求进行修改的代码,那么这本书就是为您准备的。

推荐