mirror of
https://github.com/tradecatlabs/vibe-coding-cn.git
synced 2026-08-20 06:18:05 +00:00
docs: 更新文档和技能
This commit is contained in:
@@ -455,6 +455,241 @@ build-backend = "setuptools.build_meta"
|
||||
|
||||
---
|
||||
|
||||
在**编程 / 软件开发**里,**项目架构(Project Architecture / Software Architecture)**指的是:
|
||||
|
||||
> **一个项目在“整体层面”是如何被拆分、组织、通信和演进的设计方案**
|
||||
> ——它决定了代码怎么分层、模块怎么分工、数据怎么流动、系统如何扩展和维护。
|
||||
|
||||
---
|
||||
|
||||
## 一句话理解
|
||||
|
||||
**项目架构 = 不写具体业务代码之前,就先决定“代码怎么放、模块怎么连、职责怎么分”。**
|
||||
|
||||
---
|
||||
|
||||
## 一、项目架构主要解决什么问题?
|
||||
|
||||
项目架构不是“写代码的技巧”,而是解决这些**更高层问题**:
|
||||
|
||||
* 📦 代码怎么组织才不乱?
|
||||
* 🔁 模块之间怎么通信?
|
||||
* 🧱 哪些地方可以独立修改而不影响全局?
|
||||
* 🚀 项目以后怎么扩展?
|
||||
* 🧪 如何方便测试、调试、部署?
|
||||
* 👥 多人协作如何不互相踩代码?
|
||||
|
||||
---
|
||||
|
||||
## 二、项目架构一般包含哪些内容?
|
||||
|
||||
### 1️⃣ 目录结构(最直观)
|
||||
|
||||
```text
|
||||
project/
|
||||
├── src/
|
||||
│ ├── main/
|
||||
│ ├── services/
|
||||
│ ├── models/
|
||||
│ ├── utils/
|
||||
│ └── config/
|
||||
├── tests/
|
||||
├── docs/
|
||||
└── README.md
|
||||
```
|
||||
|
||||
👉 决定 **“不同类型代码放哪里”**
|
||||
|
||||
---
|
||||
|
||||
### 2️⃣ 分层设计(核心)
|
||||
|
||||
最常见的是 **分层架构(Layered Architecture)**:
|
||||
|
||||
```text
|
||||
表示层(UI / API)
|
||||
↓
|
||||
业务逻辑层(Service)
|
||||
↓
|
||||
数据访问层(DAO / Repository)
|
||||
↓
|
||||
数据库 / 外部系统
|
||||
```
|
||||
|
||||
**规则:**
|
||||
|
||||
* 上层可以调用下层
|
||||
* 下层不能反过来依赖上层
|
||||
|
||||
---
|
||||
|
||||
### 3️⃣ 模块划分(职责边界)
|
||||
|
||||
比如一个交易系统:
|
||||
|
||||
```text
|
||||
- market_data # 行情
|
||||
- strategy # 策略
|
||||
- risk # 风控
|
||||
- order # 下单
|
||||
- account # 账户
|
||||
```
|
||||
|
||||
👉 每个模块:
|
||||
|
||||
* 只做一类事情
|
||||
* 尽量低耦合、高内聚
|
||||
|
||||
---
|
||||
|
||||
### 4️⃣ 数据与控制流
|
||||
|
||||
* 数据从哪里来?
|
||||
* 谁负责处理?
|
||||
* 谁负责存储?
|
||||
* 谁负责对外输出?
|
||||
|
||||
例如:
|
||||
|
||||
```text
|
||||
WebSocket → 数据清洗 → 指标计算 → AI评分 → SQLite → API → 前端
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 5️⃣ 技术选型(架构的一部分)
|
||||
|
||||
* 编程语言(Python / Java / Go)
|
||||
* 框架(FastAPI / Spring / Django)
|
||||
* 通信方式(HTTP / WebSocket / MQ)
|
||||
* 存储(SQLite / Redis / PostgreSQL)
|
||||
* 部署(本地 / Docker / 云)
|
||||
|
||||
---
|
||||
|
||||
## 三、常见项目架构类型(入门必懂)
|
||||
|
||||
### 1️⃣ 单体架构(Monolith)
|
||||
|
||||
```text
|
||||
一个项目,一个进程
|
||||
```
|
||||
|
||||
**适合:**
|
||||
|
||||
* 个人项目
|
||||
* 原型
|
||||
* 小系统
|
||||
|
||||
**优点:**
|
||||
|
||||
* 简单
|
||||
* 好调试
|
||||
|
||||
**缺点:**
|
||||
|
||||
* 后期难扩展
|
||||
|
||||
---
|
||||
|
||||
### 2️⃣ 分层架构(最常见)
|
||||
|
||||
```text
|
||||
Controller → Service → Repository
|
||||
```
|
||||
|
||||
**适合:**
|
||||
|
||||
* Web 后端
|
||||
* 业务系统
|
||||
|
||||
---
|
||||
|
||||
### 3️⃣ 模块化架构
|
||||
|
||||
```text
|
||||
core + plugins
|
||||
```
|
||||
|
||||
**适合:**
|
||||
|
||||
* 可插拔系统
|
||||
* 策略 / 指标系统
|
||||
|
||||
👉 **你做量化、AI分析,非常适合这个**
|
||||
|
||||
---
|
||||
|
||||
### 4️⃣ 微服务架构(进阶)
|
||||
|
||||
```text
|
||||
每个服务一个独立进程 + API 通信
|
||||
```
|
||||
|
||||
**适合:**
|
||||
|
||||
* 大团队
|
||||
* 高并发
|
||||
* 长期演进
|
||||
|
||||
❌ **新手不建议一开始用**
|
||||
|
||||
---
|
||||
|
||||
## 四、用一个“真实例子”理解(贴近你现在做的)
|
||||
|
||||
假设你做 **币安永续 AI 分析系统**:
|
||||
|
||||
```text
|
||||
backend/
|
||||
├── data/
|
||||
│ └── binance_ws.py # 行情订阅
|
||||
├── indicators/
|
||||
│ └── vpvr.py
|
||||
├── strategy/
|
||||
│ └── signal_score.py
|
||||
├── storage/
|
||||
│ └── sqlite_writer.py
|
||||
├── api/
|
||||
│ └── http_server.py
|
||||
└── main.py
|
||||
```
|
||||
|
||||
这就是**项目架构设计**:
|
||||
|
||||
* 每个文件夹只负责一件事
|
||||
* 可替换、可测试
|
||||
* 后面想接 Telegram Bot / Web 前端都不用重写核心
|
||||
|
||||
---
|
||||
|
||||
## 五、初学者常见误区 ⚠️
|
||||
|
||||
❌ 一开始就搞微服务
|
||||
❌ 所有代码写在一个文件
|
||||
❌ 架构追求“高级感”,而不是“可维护”
|
||||
❌ 没想清楚数据流就开始写
|
||||
|
||||
---
|
||||
|
||||
## 六、学习路线建议(很重要)
|
||||
|
||||
你现在学 CS,很推荐这个顺序:
|
||||
|
||||
1. **先写能跑的项目(不完美)**
|
||||
2. **代码开始乱 → 才学架构**
|
||||
3. 学会:
|
||||
|
||||
* 模块拆分
|
||||
* 分层
|
||||
* 依赖方向
|
||||
4. 再学:
|
||||
|
||||
* 设计模式
|
||||
* 微服务 / 消息队列
|
||||
|
||||
---
|
||||
|
||||
**版本**: 1.0
|
||||
**更新日期**: 2025-11-24
|
||||
**维护**: CLAUDE,CODEX,KIMI
|
||||
|
||||
Reference in New Issue
Block a user