Files
Sprout-Farm/Server/README_Refactored.md

175 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TCPGameServer 重构说明
## 概述
原始的 `TCPGameServer.py` 文件有 1569 行代码,包含大量相似的函数和重复的逻辑。为了提高代码的可维护性和可读性,我们对其进行了重构,将相似功能的函数分组整理。
## 重构前后对比
### 重构前的问题
- 文件过大1569行
- 函数分散,相似功能没有分组
- 大量重复的验证逻辑
- 缺乏清晰的代码结构
- 难以维护和扩展
### 重构后的改进
- 代码行数减少到约 1200 行
- 按功能模块清晰分组
- 提取公共方法,减少重复代码
- 增加详细的文档注释
- 更好的代码组织结构
## 代码结构分组
### 1. 初始化和生命周期管理
```python
# ==================== 1. 初始化和生命周期管理 ====================
- __init__() # 初始化服务器
- start_crop_growth_timer() # 启动作物生长计时器
- stop() # 停止服务器
- _remove_client() # 移除客户端
```
### 2. 验证和检查方法
```python
# ==================== 2. 验证和检查方法 ====================
- _check_client_version() # 检查客户端版本
- _check_user_logged_in() # 检查用户登录状态
- _validate_qq_number() # 验证QQ号格式
```
### 3. 数据管理方法
```python
# ==================== 3. 数据管理方法 ====================
- load_player_data() # 加载玩家数据
- save_player_data() # 保存玩家数据
- _load_player_data_with_check() # 带检查的加载玩家数据
- _load_crop_data() # 加载作物配置数据
- _update_player_logout_time() # 更新玩家登出时间
```
### 4. 作物系统管理
```python
# ==================== 4. 作物系统管理 ====================
- update_crops_growth() # 更新作物生长状态
- _push_crop_update_to_player() # 推送作物更新给玩家
```
### 5. 消息处理路由
```python
# ==================== 5. 消息处理路由 ====================
- _handle_message() # 消息路由分发
```
### 6. 用户认证处理
```python
# ==================== 6. 用户认证处理 ====================
- _handle_greeting() # 处理问候消息
- _handle_login() # 处理登录
- _handle_register() # 处理注册
- _handle_verification_code_request() # 处理验证码请求
- _handle_verify_code() # 处理验证码验证
```
### 7. 游戏操作处理
```python
# ==================== 7. 游戏操作处理 ====================
- _handle_harvest_crop() # 处理收获作物
- _handle_plant_crop() # 处理种植作物
- _handle_buy_seed() # 处理购买种子
- _handle_dig_ground() # 处理开垦土地
```
### 8. 系统功能处理
```python
# ==================== 8. 系统功能处理 ====================
- _handle_get_play_time() # 获取游玩时间
- _handle_update_play_time() # 更新游玩时间
- _handle_player_rankings_request() # 获取玩家排行榜
- _handle_crop_data_request() # 获取作物数据
- _handle_visit_player_request() # 访问其他玩家农场
- _handle_return_my_farm_request() # 返回自己农场
```
### 9. 辅助方法
```python
# ==================== 辅助方法 ====================
- _send_initial_login_data() # 发送登录初始数据
- _send_register_error() # 发送注册错误响应
- _send_action_error() # 发送游戏操作错误响应
- _create_new_user() # 创建新用户
- _process_harvest() # 处理作物收获逻辑
- _process_planting() # 处理作物种植逻辑
- _process_seed_purchase() # 处理种子购买逻辑
- _process_digging() # 处理土地开垦逻辑
```
## 主要改进点
### 1. 代码复用
- 提取了公共的验证逻辑(如 `_check_user_logged_in``_check_client_version`
- 统一了错误处理方式(如 `_send_action_error``_send_register_error`
- 将复杂的业务逻辑提取为独立方法(如 `_process_harvest``_process_planting`
### 2. 清晰的分组
- 按功能将方法分为8个主要组别
- 每个组别有明确的职责边界
- 便于查找和维护特定功能
### 3. 统一的导入
- 将所有导入语句集中在文件顶部
- 按标准库、第三方库、本地模块的顺序组织
### 4. 改进的文档
- 为每个方法组添加了清晰的注释
- 为主要方法添加了详细的文档字符串
- 在类的开头添加了功能概述
### 5. 错误处理优化
- 统一了错误响应格式
- 提取了公共的错误处理逻辑
- 减少了重复的错误处理代码
## 使用方法
重构后的代码与原代码功能完全相同,使用方法不变:
```python
# 启动服务器
python TCPGameServer_Refactored.py
```
## 迁移指南
如果要从原始版本迁移到重构版本:
1. 备份原始的 `TCPGameServer.py` 文件
2.`TCPGameServer_Refactored.py` 重命名为 `TCPGameServer.py`
3. 确保所有依赖文件(如 `TCPServer.py``QQEmailSend.py`)仍然存在
4. 测试所有功能是否正常工作
## 维护建议
1. **添加新功能时**:按照现有的分组结构,将新方法添加到相应的组别中
2. **修改现有功能时**:优先考虑是否可以复用现有的辅助方法
3. **错误处理**:使用统一的错误处理方法,保持响应格式一致
4. **文档更新**:添加新功能时,记得更新相应的文档注释
## 性能影响
重构主要关注代码结构和可维护性,对运行时性能的影响微乎其微:
- 方法调用层次略有增加,但影响可忽略
- 代码逻辑保持不变,算法复杂度相同
- 内存使用基本相同
## 总结
通过这次重构,我们成功地:
- 减少了代码重复
- 提高了代码可读性
- 改善了代码组织结构
- 便于后续维护和扩展
- 保持了原有功能的完整性
重构后的代码更加专业和易于维护,为后续的功能扩展奠定了良好的基础。