GO语言工程实践之测试(三)|青训营笔记

83 阅读2分钟

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

一、本堂课重点内容:

  • 测试
  • 项目实践

二、详细知识点介绍:

  • 测试

3.5.3 基准测试——优化

为了解决rand函数的性能问题,可以使用开源的fastrand()函数。

func FastSelect() int{
    return ServerIndex[fastrand.Intn(10)]
}

测试结果:

image.png

可以发现,整体的性能约提升了百倍。

fastrand的实现牺牲了随机数列的一致性,但其在大多数场景也是适用的,若有需要随机的场景建议使用fastrand,否则可能导致一定的性能问题。

  • 项目实践

4.1 需求描述

社区话题页面

主要功能:

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

4.2 需求用例

用例图:

image.png

TopicPage:话题页

Topic:话题

PostList:回帖列表

4.3 ER图——Entity Relationship Diagram

image.png

ER图表征了现实世界的概念模型,有了模型中实体的属性以及实体之间的关系对后续做开发提供了一个比较清晰的思路。

在这张ER图中有两个实体:Topic、Post,在每个实体下面列出了其所拥有的属性。

中间的线表示Topic对Post为一对多的关系。

4.4 分层结构

image.png

作出一定的领域分割会提高代码的可读性。

  • 数据层:数据Model,外部数据的增删改查
  • 逻辑层:业务Entity,处理核心业务逻辑输出
  • 视图层:识图View,处理和外部的交互逻辑

数据层主要关联的是底层的数据模型,封装外部数据的增删改查。

逻辑层通过接收数据层的一些数据做封装,会输出一个实体,对应我们的需求该实体即为一个话题页面。

视图层对上游负责,包装一些数据格式如JSON等。

适合的才是最好的,此分层结构不需要强行套用。

三、引用参考: