Golang工程实践之项目实践 | 青训营笔记

99 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第10天

项目实践

上一节课进行了工程设计的测试的介绍,根据上节课内容,进一步扩充了项目实践的步骤,并拓展到其他内容,阐述一些必要的工作,如需求设计、代码开发、测试运行。

(1). 需求设计

本节课举的例子是设计一个社区界面,即带有主题帖、回复贴的简单页面构造,出于初学考虑,这里的需求内容排除了一些复杂的内容,主要要求如下:

社区话题页面
展示话题(标题,文字描述)和回帖列表
暂不考虑前端页面实现,仅仅实现一个本地Web服务
话题和回帖数据用文件存储

对需求用例进行分析,可以设计出浏览帖子的用户的用例图:
image.png
对于用户User而言,他们能看到帖子的主题和回复列表,这两个元素可以化为两个结构体Topic和Post:还可以据此设计E-R图,便于设计数据库。

TopicPost
idtopic_id
titletitle
contentcontent
create_timecreate_time

接下来是设计分层结构,可以按照RSC架构分为数据层、逻辑层和视图层。 这三个层的具体功能如下:

  • 数据层: 数据Model,外部数据增删改查,可以对文件或数据库操作
  • 逻辑层: 业务Entity,处理核心业务逻辑输出
  • 视图层: 视图View,处理和外部的交互逻辑

分层结构如下:
image.png

对于开发可以采用的组件工具,可以使用高性能的Go Web框架 gin,Github链接如下: Gin
或采用 go mod 下载gin包:

go init
go get gopkg.in/gin-gonic/in.v1@v1.3.0

(2). 代码开发

按照RSC结构,首先是对数据的操作的数据层,对 Repository 进行设计,那么该从何开始呢,首先从用例的两个对象入手,分别是 Topic 和 Post 。

{
    "id":1,
    "title":"主题帖标题",
    "content":"主题帖内容",
    "create_time":1650437625
}

{
    "id":1,
    "parent_id":1,
    "content":"回复帖内容",
    "create_time":1650437674
}