Files
Sprout-Farm/Server/README_Refactored.md

5.9 KiB
Raw Blame History

TCPGameServer 重构说明

概述

原始的 TCPGameServer.py 文件有 1569 行代码,包含大量相似的函数和重复的逻辑。为了提高代码的可维护性和可读性,我们对其进行了重构,将相似功能的函数分组整理。

重构前后对比

重构前的问题

  • 文件过大1569行
  • 函数分散,相似功能没有分组
  • 大量重复的验证逻辑
  • 缺乏清晰的代码结构
  • 难以维护和扩展

重构后的改进

  • 代码行数减少到约 1200 行
  • 按功能模块清晰分组
  • 提取公共方法,减少重复代码
  • 增加详细的文档注释
  • 更好的代码组织结构

代码结构分组

1. 初始化和生命周期管理

# ==================== 1. 初始化和生命周期管理 ====================
- __init__()                    # 初始化服务器
- start_crop_growth_timer()     # 启动作物生长计时器
- stop()                        # 停止服务器
- _remove_client()              # 移除客户端

2. 验证和检查方法

# ==================== 2. 验证和检查方法 ====================
- _check_client_version()       # 检查客户端版本
- _check_user_logged_in()       # 检查用户登录状态
- _validate_qq_number()         # 验证QQ号格式

3. 数据管理方法

# ==================== 3. 数据管理方法 ====================
- load_player_data()            # 加载玩家数据
- save_player_data()            # 保存玩家数据
- _load_player_data_with_check() # 带检查的加载玩家数据
- _load_crop_data()             # 加载作物配置数据
- _update_player_logout_time()  # 更新玩家登出时间

4. 作物系统管理

# ==================== 4. 作物系统管理 ====================
- update_crops_growth()         # 更新作物生长状态
- _push_crop_update_to_player() # 推送作物更新给玩家

5. 消息处理路由

# ==================== 5. 消息处理路由 ====================
- _handle_message()             # 消息路由分发

6. 用户认证处理

# ==================== 6. 用户认证处理 ====================
- _handle_greeting()            # 处理问候消息
- _handle_login()               # 处理登录
- _handle_register()            # 处理注册
- _handle_verification_code_request() # 处理验证码请求
- _handle_verify_code()         # 处理验证码验证

7. 游戏操作处理

# ==================== 7. 游戏操作处理 ====================
- _handle_harvest_crop()        # 处理收获作物
- _handle_plant_crop()          # 处理种植作物
- _handle_buy_seed()            # 处理购买种子
- _handle_dig_ground()          # 处理开垦土地

8. 系统功能处理

# ==================== 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. 辅助方法

# ==================== 辅助方法 ====================
- _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 TCPGameServer_Refactored.py

迁移指南

如果要从原始版本迁移到重构版本:

  1. 备份原始的 TCPGameServer.py 文件
  2. TCPGameServer_Refactored.py 重命名为 TCPGameServer.py
  3. 确保所有依赖文件(如 TCPServer.pyQQEmailSend.py)仍然存在
  4. 测试所有功能是否正常工作

维护建议

  1. 添加新功能时:按照现有的分组结构,将新方法添加到相应的组别中
  2. 修改现有功能时:优先考虑是否可以复用现有的辅助方法
  3. 错误处理:使用统一的错误处理方法,保持响应格式一致
  4. 文档更新:添加新功能时,记得更新相应的文档注释

性能影响

重构主要关注代码结构和可维护性,对运行时性能的影响微乎其微:

  • 方法调用层次略有增加,但影响可忽略
  • 代码逻辑保持不变,算法复杂度相同
  • 内存使用基本相同

总结

通过这次重构,我们成功地:

  • 减少了代码重复
  • 提高了代码可读性
  • 改善了代码组织结构
  • 便于后续维护和扩展
  • 保持了原有功能的完整性

重构后的代码更加专业和易于维护,为后续的功能扩展奠定了良好的基础。