byte_douyin_project icon indicating copy to clipboard operation
byte_douyin_project copied to clipboard

写给后续参加字节青训营的同学

Open acking-you opened this issue 1 year ago • 0 comments

建议

本仓库的代码写于很久以前,实现的接口和思路也停留在很久以前,代码中用到的库也停留在很久以前。架构也是非常简单,没有分布式之类的,所以我建议你不要抄袭本仓库的架构来完成抖音项目,据我了解后面的青训营要求的架构都应该是分布式架构,而不是像我这种单体架构。当然我后面也基于 etcd/kitex/gin/gorm 实现了分布式的版本,但是由于没有时间完善,所以一直在本地仓库待着。

那么本仓库代码就一无是处了吗?对于已经了解如何开发基本web后端业务的同学来说,这个仓库的代码确实没有任何价值,但是如果你是初学者,刚刚接触到业务代码方面,我觉得还是有必要从本仓库这种比较简单代码入手,学会如何在 go 语言中实现对应的 http 后端接口。

学习价值主要体现在以下几个方面:

  1. 简单的 MVC 单体架构如何实现。
  2. gin、gorm框架如何使用。
  3. 一个接口需求到实现的过程。

我那一届字节内部开源的 kitex 与 hertz 框架还不成熟,所以也没有去使用他们,后续如果你需要使用他们,我建议去看对应的官方文档,应该在 cloudwego 中有。

当然我还是想要吐槽一下,字节开源的框架的官方文档其实不利于新手去看,因为他们文档的内容设计本身就是有一定门槛的,形成鲜明对比的可能是 gin 框架和 hertz 框架,这两个官方文档你们可以对比看看,明显 gin 框架的文档对新手更为友好。所以我建议能用gin框架还是用他吧😂

遇到问题

如果你遇到本项目无法跑起来(这点文档应该描述的很详细),或者运行产生了错误,我觉得这是正常的。你应该学会自己找到错误,因为本项目本就不复杂,需要实现的各种功能也在 gin 框架或者 gorm 框架的文档中能找到,养成自己解决问题的习惯是最好的,如果实在解决不了再建议带上自己的思路来提issue,而不是直接提上报错信息。

给其他方向有经验的同学写go的一点建议

如果你有 Java 或其他语言后端接口编写的经验,我推荐你可以使用 ent 这个库来替代 gorm ,这个用起来可能会更顺手,但是有一定的门槛。如果你经常使用 try catch 来处理错误,那么肯定会不习惯 if err,或者你习惯 rust 中的 Result、Option+snafu库来处理错误,那么 if err就更觉得别扭了,从我的感受而言,try catch<if err <Result ,目前我觉得最佳的错误处理方式可能就是rust中那一套enum+模式匹配+Result+snafu库的组合拳了。

acking-you avatar Jul 31 '23 09:07 acking-you