Skip to content

Commit c7167a6

Browse files
committed
新增代码审查处理清单与工具对比分析文档
- **代码审查处理清单**: - 详细列出高优先级(P0)和中优先级(P1)问题的修复建议,涵盖颜色硬编码、类型安全、资源管理等方面。 - 提供预计工作量和建议执行顺序,确保代码质量提升。 - **代码审查工具对比分析**: - 比较个人审查与其他工具在高、中、低优先级问题上的差异,强调各自的优势与不足。 - 提出最佳实践,建议结合使用两种工具以全面提升代码质量与降低技术债务。 - **代码审查报告**: - 针对 `src/` 目录下的所有 TypeScript/TSX 文件进行规范符合性检查,明确问题描述与处理建议。
1 parent e99c1e6 commit c7167a6

19 files changed

Lines changed: 1523 additions & 194 deletions

CODE_REVIEW_CHECKLIST.md

Lines changed: 324 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,324 @@
1+
# 代码审查处理清单
2+
3+
## 🔴 P0 - 高优先级(必须修复)
4+
5+
### 1. 修复硬编码颜色问题(代码规范)
6+
- [ ] 扫描所有 `bg-[#...]``text-[#...]``border-[#...]` 使用
7+
- [ ] 扫描所有内联样式中的颜色硬编码
8+
- [ ] 将常用的 Binance 色系映射到 theme 或 CSS 变量(如 `--color-success``--color-danger``--color-warning`
9+
- [ ] 替换 `Toast.tsx` 中的颜色(第 32-49 行)
10+
- [ ] 替换 `useWasmEngine.ts` 中的颜色(第 513-515 行)
11+
- [ ] 替换 `StatsPanel.tsx` 中的颜色(第 73-75, 88-96 行)
12+
- [ ] 替换 `LoadingScreen.tsx` 中的颜色(第 7-10 行)
13+
- [ ] 替换 `LeverageSlider.tsx` 中的颜色和内联样式
14+
- [ ] 替换 `MobileTradebar.tsx` 中的颜色
15+
- [ ] 替换 `PositionCard.tsx` 中的颜色和内联样式
16+
- [ ] 替换 `Header.tsx` 中的颜色
17+
- [ ] 替换 `App.tsx``TradeForm.tsx` 中的颜色
18+
- [ ] 使用 `text-[var(--...)]`/`bg-[var(--...)]` 或现有 palette 类替代
19+
- [ ] 测试主题切换功能
20+
21+
**涉及文件**(15个文件):
22+
- `src/components/Toast/Toast.tsx`
23+
- `src/hooks/useWasmEngine.ts`
24+
- `src/components/Dashboard/StatsPanel.tsx`
25+
- `src/components/Layout/LoadingScreen.tsx`
26+
- `src/components/Dashboard/Trade/LeverageSlider.tsx`
27+
- `src/components/Dashboard/Trade/MobileTradebar.tsx`
28+
- `src/components/Dashboard/Trade/PositionCard.tsx`
29+
- `src/components/Layout/Header.tsx`
30+
- `src/App.tsx`
31+
- `src/components/Dashboard/Trade/TradeForm.tsx`
32+
- 其他组件文件
33+
34+
**预计工作量**:2-3 天
35+
36+
---
37+
38+
### 2. 修复类型安全问题(代码规范)
39+
- [ ] 检查 `src/hooks/tradingState/eventHandler.ts` 第 49-50 行
40+
- [ ]`event` 明确定义联合类型(覆盖 `positionOpened` 等事件形态)
41+
- [ ] 移除 `as any``eslint-disable`
42+
- [ ] 使用类型守卫(type guards)进行类型检查
43+
- [ ] 检查其他文件中的 `as any` 使用
44+
- [ ] 测试类型安全
45+
46+
**涉及文件**
47+
- `src/hooks/tradingState/eventHandler.ts`
48+
- `src/workers/marketSimulation/history.ts`(可能还有其他)
49+
50+
**预计工作量**:0.5 天
51+
52+
---
53+
54+
### 3. 修复日志规范问题(代码规范)
55+
- [ ] 创建 `src/utils/logger.ts`(轻量 logger 包装)
56+
- [ ] 实现 DEV 环境输出,生产环境静默
57+
- [ ] 替换 `useWasmEngine.ts` 中的 8 处 `console.log`
58+
- [ ] 替换 `useBinanceMarket.ts` 中的 20 处 `console.log`
59+
- [ ] 替换 `services/binance/api.ts` 中的 6 处 `console.log`
60+
- [ ] 替换 `services/binance/websocket.ts` 中的 4 处 `console.log`
61+
- [ ] 替换 `useMockMarket.ts` 中的 3 处 `console.log`
62+
- [ ] 替换 `useMarketData.ts` 中的 3 处 `console.log`
63+
- [ ] 替换其他文件中的 `console.log`
64+
- [ ] 或统一改为 `console.warn`/`console.error` 并打上特定前缀
65+
- [ ] 测试日志输出(DEV/PROD 环境)
66+
67+
**涉及文件**(10个文件):
68+
- `src/hooks/useWasmEngine.ts` (8处)
69+
- `src/hooks/useBinanceMarket.ts` (20处)
70+
- `src/services/binance/api.ts` (6处)
71+
- `src/services/binance/websocket.ts` (4处)
72+
- `src/hooks/useMockMarket.ts` (3处)
73+
- `src/hooks/useMarketData.ts` (3处)
74+
- `src/hooks/tradingState/eventHandler.ts` (1处)
75+
- `src/hooks/tradingEngine/wasmSingleton.ts` (5处)
76+
- `src/types/wasm.ts` (1处)
77+
- `src/services/binance/index.ts` (1处)
78+
79+
**预计工作量**:1 天
80+
81+
---
82+
83+
### 4. 修复定时器清理问题(资源管理)
84+
- [ ] 检查 `useBinanceMarket.ts` 的定时器清理逻辑
85+
- [ ] 修复 `useTradingActions.ts` 的防抖定时器清理
86+
- [ ] 优化 `useCandleData.ts` 的定时器依赖
87+
- [ ] 添加测试验证清理逻辑
88+
89+
**涉及文件**
90+
- `src/hooks/useBinanceMarket.ts` (第 600-628, 667-677 行)
91+
- `src/hooks/useTradingActions.ts` (第 111-113, 270-276 行)
92+
- `src/hooks/useCandleData.ts` (第 181-192 行)
93+
94+
**预计工作量**:0.5 天
95+
96+
---
97+
98+
### 5. 引入 TanStack Query(服务端状态管理)
99+
- [ ] 安装 `@tanstack/react-query`
100+
- [ ]`main.tsx` 中配置 `QueryClientProvider`
101+
- [ ] 重构 `useBinanceMarket.ts`,使用 `useQuery` 管理历史 K 线
102+
- [ ] 重构 `useMarketData.ts`,整合 TanStack Query
103+
- [ ] 保留 WebSocket 实时数据流(Worker 模式)
104+
- [ ] 测试数据流切换和错误处理
105+
106+
**涉及文件**
107+
- `src/hooks/useBinanceMarket.ts`
108+
- `src/hooks/useMarketData.ts`
109+
- `src/services/binance/api.ts`
110+
- `src/main.tsx`
111+
112+
**预计工作量**:2-3 天
113+
114+
---
115+
116+
## 🟡 P1 - 中优先级(建议修复)
117+
118+
### 6. 引入 Zustand(全局 UI 状态)
119+
- [ ] 安装 `zustand`
120+
- [ ] 创建 `src/stores/toastStore.ts`
121+
- [ ] 创建 `src/stores/appStore.ts`(数据源切换)
122+
- [ ] 重构 `ToastContext.tsx` 使用 Zustand
123+
- [ ] 重构 `App.tsx` 的数据源状态管理
124+
- [ ] 移除 `ToastContext.tsx`(如果不再需要)
125+
126+
**涉及文件**
127+
- `src/components/Toast/ToastContext.tsx`
128+
- `src/App.tsx`
129+
- `src/stores/` (新建)
130+
131+
**预计工作量**:1 天
132+
133+
---
134+
135+
### 7. 引入 Zod(运行时数据校验)
136+
- [ ] 安装 `zod`
137+
- [ ] 创建 `src/schemas/binance.ts`(Binance API Schema)
138+
- [ ] 创建 `src/schemas/trading.ts`(交易数据 Schema)
139+
- [ ]`services/binance/api.ts` 中添加校验
140+
- [ ]`services/binance/websocket.ts` 中添加校验
141+
- [ ] 为 WASM 返回数据添加 Schema(如果可能)
142+
143+
**涉及文件**
144+
- `src/services/binance/api.ts`
145+
- `src/services/binance/websocket.ts`
146+
- `src/types/index.ts`
147+
- `src/schemas/` (新建)
148+
149+
**预计工作量**:1-2 天
150+
151+
---
152+
153+
### 8. 审查性能优化使用(添加证据或移除)
154+
- [ ] 审查 `App.tsx``useCallback` 使用
155+
- [ ] 审查 `OrderBook.tsx``useMemo` 使用
156+
- [ ] 审查 `TradeForm.tsx``memo` 使用
157+
- [ ] 为每个优化添加注释说明原因
158+
- [ ] 使用 React DevTools Profiler 验证效果
159+
- [ ] 移除没有明确证据的优化
160+
161+
**涉及文件**
162+
- `src/App.tsx`
163+
- `src/components/Dashboard/OrderBook.tsx`
164+
- `src/components/Dashboard/Trade/TradeForm.tsx`
165+
- `src/components/Dashboard/Chart/LightweightChart/index.tsx`
166+
- `src/hooks/useWasmEngine.ts`
167+
- `src/hooks/useCandleData.ts`
168+
169+
**预计工作量**:1 天
170+
171+
---
172+
173+
### 9. 重构自定义 Hook 边界
174+
- [ ]`useWasmEngine.ts` 的错误处理策略提取为配置
175+
- [ ]`useMarketData.ts` 的数据源切换策略提取为配置
176+
- [ ] 确保 Hook 只负责执行,不负责业务决策
177+
- [ ] 在组件层显式表达业务逻辑
178+
179+
**涉及文件**
180+
- `src/hooks/useWasmEngine.ts` (第 297-395 行)
181+
- `src/hooks/useMarketData.ts` (第 96-120 行)
182+
183+
**预计工作量**:1 天
184+
185+
---
186+
187+
### 10. 修复 Tailwind 魔术数字/任意尺寸
188+
- [ ] 扫描所有 `[calc(...)]``[...px]` 使用
189+
- [ ] 将常见 `[px]` 尺寸改为标准刻度或 CSS 变量
190+
- [ ] 替换 `App.tsx` 中的 `pb-[101px]``h-[214px]``max-w-[120px]``xl:min-w-[200px]`
191+
- [ ] 替换 Mobile/Trade 组件中的魔术数字
192+
- [ ] 通过 CSS 变量表达业务约束尺寸(如 `--orderbook-h`),再用 `h-[var(--orderbook-h)]`
193+
- [ ] 测试响应式布局
194+
195+
**涉及文件**
196+
- `src/App.tsx`
197+
- `src/components/Dashboard/Trade/MobileTradebar.tsx`
198+
- `src/components/Dashboard/Trade/TradeForm.tsx`
199+
- 其他组件文件
200+
201+
**预计工作量**:0.5 天
202+
203+
---
204+
205+
### 11. 修复内联样式中的颜色/阴影
206+
- [ ] 扫描所有内联 `style` 中的颜色和阴影
207+
- [ ]`PositionCard.tsx` 中的 `style={{ color: '#848e9c' }}` 转为 CSS 变量或 Tailwind 类
208+
- [ ]`LeverageSlider.tsx` 中的 `textShadow``boxShadow` rgba 转为 `shadow`/`drop-shadow`/`ring` 类组合
209+
- [ ] 测试视觉效果一致性
210+
211+
**涉及文件**
212+
- `src/components/Dashboard/Trade/PositionCard.tsx` (第 195 行)
213+
- `src/components/Dashboard/Trade/LeverageSlider.tsx` (第 64/101 行)
214+
- 其他文件
215+
216+
**预计工作量**:0.5 天
217+
218+
---
219+
220+
### 12. 添加错误边界
221+
- [ ] 创建 `src/components/Layout/ErrorBoundary.tsx`
222+
- [ ]`App.tsx` 中包裹错误边界
223+
- [ ] 添加错误日志记录
224+
- [ ] 测试错误边界功能
225+
226+
**涉及文件**
227+
- `src/components/Layout/ErrorBoundary.tsx` (新建)
228+
- `src/App.tsx`
229+
230+
**预计工作量**:0.5 天
231+
232+
---
233+
234+
## 🟢 P2 - 低优先级(可选)
235+
236+
### 13. 评估代码行数,按需拆分
237+
- [ ] 统计所有文件行数
238+
- [ ] 评估 `useWasmEngine.ts` (611行) 是否需要拆分
239+
- [ ] 评估 `useBinanceMarket.ts` (693行) 是否需要拆分
240+
- [ ] 评估 `TradeForm.tsx` (682行) 是否需要拆分
241+
- [ ] 评估 `useUnifiedChartSetup.ts` (418行) 是否需要拆分
242+
- [ ] 如果逻辑线性且无状态分叉,保持现状
243+
244+
**涉及文件**
245+
- 所有超过 300 行的文件
246+
247+
**预计工作量**:1-2 天(如果需要拆分)
248+
249+
---
250+
251+
### 14. 改进事件处理命名
252+
- [ ] 扫描所有内联 `onClick={() => ...}` 使用
253+
- [ ] 对频繁渲染或复杂回调抽出 `useCallback(handleXxx)`
254+
- [ ] 统一使用 `handleXxx` 前缀命名
255+
- [ ] 其余保留内联可作为低风险项逐步收敛
256+
257+
**预计工作量**:1 天
258+
259+
---
260+
261+
### 15. 提取 Promise 工具函数
262+
- [ ] 检查 `services/binance/api.ts` 中的 `new Promise(setTimeout)` 使用
263+
- [ ] 提取 `sleep(ms)``src/utils/async.ts`
264+
- [ ] 统一调用,便于测试与平台化
265+
- [ ] 替换所有相关使用
266+
267+
**涉及文件**
268+
- `src/services/binance/api.ts`
269+
- `src/utils/async.ts` (新建)
270+
271+
**预计工作量**:0.5 天
272+
273+
---
274+
275+
### 16. 架构重构(Feature-First)
276+
- [ ] 评估当前架构的可维护性
277+
- [ ] 如果决定重构,规划新的目录结构
278+
- [ ] 逐步迁移代码(不强制)
279+
280+
**预计工作量**:3-5 天(如果决定重构)
281+
282+
---
283+
284+
### 17. 类型安全改进
285+
- [ ] 减少 `as unknown as` 类型断言的使用
286+
- [ ] 改进 WASM 类型定义
287+
- [ ] 添加更严格的类型检查
288+
289+
**涉及文件**
290+
- `src/hooks/useWasmEngine.ts`
291+
- `src/types/wasm.ts`
292+
293+
**预计工作量**:0.5 天
294+
295+
---
296+
297+
## 总结
298+
299+
### 总预计工作量
300+
- **P0(必须)**:6-8 天
301+
- 代码规范(颜色、类型、日志):3.5-4.5 天
302+
- 资源管理:0.5 天
303+
- TanStack Query:2-3 天
304+
- **P1(建议)**:6-8 天
305+
- Zustand:1 天
306+
- Zod:1-2 天
307+
- 性能优化审查:1 天
308+
- Hook 边界:1 天
309+
- 代码风格(Tailwind、内联样式):1 天
310+
- 错误边界:0.5 天
311+
- **P2(可选)**:5-8 天
312+
313+
### 建议执行顺序
314+
1. **Week 1**:P0 代码规范任务(颜色、类型、日志)⭐ **优先**
315+
2. **Week 2**:P0 技术栈任务(TanStack Query + 资源管理)
316+
3. **Week 3**:P1 任务(Zustand + Zod + 性能优化审查)
317+
4. **Week 4**:P1 任务(Hook 边界 + 代码风格 + 错误边界)
318+
5. **Week 5+**:P2 任务(按需执行)
319+
320+
### 注意事项
321+
- 每个任务完成后进行测试
322+
- 保持代码可运行状态
323+
- 优先保证功能正确性,再优化架构
324+
- 根据实际项目进度调整优先级

0 commit comments

Comments
 (0)