Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
acking-you opened this issue Jul 31, 2023 · 0 comments
Open

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

acking-you opened this issue Jul 31, 2023 · 0 comments

Comments

@acking-you
Copy link
Owner

建议

本仓库的代码写于很久以前,实现的接口和思路也停留在很久以前,代码中用到的库也停留在很久以前。架构也是非常简单,没有分布式之类的,所以我建议你不要抄袭本仓库的架构来完成抖音项目,据我了解后面的青训营要求的架构都应该是分布式架构,而不是像我这种单体架构。当然我后面也基于 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 acking-you pinned this issue Jul 31, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant