5.9 KiB
5.9 KiB
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
迁移指南
如果要从原始版本迁移到重构版本:
- 备份原始的
TCPGameServer.py文件 - 将
TCPGameServer_Refactored.py重命名为TCPGameServer.py - 确保所有依赖文件(如
TCPServer.py、QQEmailSend.py)仍然存在 - 测试所有功能是否正常工作
维护建议
- 添加新功能时:按照现有的分组结构,将新方法添加到相应的组别中
- 修改现有功能时:优先考虑是否可以复用现有的辅助方法
- 错误处理:使用统一的错误处理方法,保持响应格式一致
- 文档更新:添加新功能时,记得更新相应的文档注释
性能影响
重构主要关注代码结构和可维护性,对运行时性能的影响微乎其微:
- 方法调用层次略有增加,但影响可忽略
- 代码逻辑保持不变,算法复杂度相同
- 内存使用基本相同
总结
通过这次重构,我们成功地:
- 减少了代码重复
- 提高了代码可读性
- 改善了代码组织结构
- 便于后续维护和扩展
- 保持了原有功能的完整性
重构后的代码更加专业和易于维护,为后续的功能扩展奠定了良好的基础。