How I Structure New Projects In Golang
Summary
TLDR本视频由一位创业者讲述,他介绍了他的公司Laue近期开始进行的2.0版本重写过程。他解释了原项目是用Next.js和TypeScript编写的,但由于公司规模和项目范围的显著变化,他们决定将后端改写为使用Go语言,前端使用SvelteKit。视频中详细讨论了Go项目结构的设置,强调没有绝对的项目结构模式,而是应根据项目需求灵活调整。他还提到了如何处理数据库、业务逻辑、以及如何通过简化的方法有效地管理代码。此外,他鼓励开发者拥有结果驱动的开发心态,并提供了关于如何组织代码、选择框架和处理性能考虑的实用建议。
Takeaways
- 😊没有绝对完美的项目结构,选择什么结构要根据自身团队需求决定
- 👍使用 make 构建命令非常简单实用
- 💡把逻辑分别放到 handlers、packages、data 等文件夹中可以很好地组织代码
- 📁利用 types 文件夹存储共享的类型定义
- 🔨利用 util 文件夹存储公共的工具函数
- ⚙️handlers 只关注请求处理,业务逻辑放到 packages
- 📦data 文件夹处理所有数据库相关逻辑
- 🌈不必局限于后端或前端开发者的身份,要学会全栈思维
- ✅测试业务逻辑用单元测试,测试数据逻辑用集成测试
- ☝️简单的结构容易扩展,要用结果导向的方式迭代改进
Q & A
Laue公司是什么时候成立的?
-Laue公司是三年前成立的。
为什么Laue公司决定进行2.0版本的重写?
-因为Laue公司最近获得了大量资金,且项目范围发生了显著变化,需要扩大规模。
Laue 2.0版本后端和前端分别采用了哪些技术?
-后端采用Go语言编写,前端使用SvelteKit。
视频中提到的'CMD文件夹'在Go项目结构中起什么作用?
-CMD文件夹包含独立的包,每个包中都有一个main.go文件,用于引导不同的应用程序,比如API服务。
为什么作者认为在编程中没有完美的项目结构?
-因为编程领域中,很多人会强加他们创建的编程范式,认为它是最好的。但实际上,每种方法都有其好处和不足,应根据具体情况灵活调整。
在Go项目中,作者如何看待性能问题?
-作者认为,性能在大多数情况下不应该是主要关注点,因为在达到性能瓶颈之前,项目通常会有很大的用户基础,届时解决性能问题是可行的。
什么是'result driven development mindset',作者为什么推荐它?
-结果驱动开发心态意味着专注于实现目标和结果,而不是过分关注使用的工具和包的组织方式。作者推荐它,因为它鼓励开发人员根据实际情况灵活调整,专注于产出。
视频中提到使用什么工具管理数据库迁移?
-作者提到使用了一个简单的脚本来管理数据库迁移,尤其是在开发过程中处理数据库处于“脏状态”的情况。
为什么作者提倡在开发中避免过度使用第三方CLI包?
-作者认为使用简单脚本可以有效地完成任务,而不需要引入可能复杂和过度的第三方CLI包,从而保持项目的简洁性。
在讨论Go项目结构时,作者如何处理全局变量的使用?
-虽然全局变量在某些情况下可能带来风险,但作者认为,如果在正确的时间和地点使用,全局变量是可以接受的。尤其是在数据库实例的上下文中,全局变量可以简化数据访问。
Outlines
此内容仅限付费用户访问。 请升级后访问。
立即升级Mindmap
此内容仅限付费用户访问。 请升级后访问。
立即升级Keywords
此内容仅限付费用户访问。 请升级后访问。
立即升级Highlights
此内容仅限付费用户访问。 请升级后访问。
立即升级Transcripts
此内容仅限付费用户访问。 请升级后访问。
立即升级浏览更多相关视频
Multiple JDBC Clients - How to configure multiple DataSources in Spring
Create a List of Todo items in SwiftUI | Todo List #1
How to write more flexible game code
OmniFocus Workflows with Michael Kirkham Jones
Replit CEO Builds an App with 100% AI in 20 Min: Future of Coding?
Build an AI code generator w/ RAG to write working LangChain
5.0 / 5 (0 votes)