mirror of
https://github.com/LHY0125/Gobang-Game.git
synced 2026-05-10 02:19:46 +08:00
7.9 KiB
7.9 KiB
五子棋项目代码架构重构指南
📋 概述
本文档详细记录了五子棋项目在v7.0版本中进行的重大代码架构重构,包括重构的目标、实施过程、技术细节和带来的改进。
🎯 重构目标
主要目标
- 代码模块化 - 实现清晰的模块分离和职责划分
- 配置统一管理 - 集中管理所有配置参数和宏定义
- 全局变量规范化 - 统一管理全局变量,避免散乱分布
- 类型定义标准化 - 集中定义所有数据结构和类型
- 提升可维护性 - 降低代码耦合度,提高可读性和可维护性
预期收益
- 减少代码重复和冗余
- 提高开发效率和调试便利性
- 增强代码的可扩展性和可移植性
- 为后续功能开发奠定坚实基础
🏗️ 重构实施
1. 配置参数统一管理
重构前状态
- 配置参数散落在多个头文件中
- 存在重复定义和不一致的问题
- 网络相关配置分散在
network.h中 - 缺乏统一的配置管理机制
重构措施
- 集中到config.h:将所有配置宏定义迁移到
config.h文件 - 分类管理:按功能模块对配置参数进行分组
- 消除重复:移除重复的宏定义,确保唯一性
- 标准化命名:统一配置参数的命名规范
配置分类结构
// 棋盘配置
#define BOARD_SIZE 15
#define MIN_BOARD_SIZE 5
#define MAX_BOARD_SIZE 25
// 游戏模式配置
#define MODE_HUMAN_VS_AI 1
#define MODE_HUMAN_VS_HUMAN 2
#define MODE_NETWORK_BATTLE 3
// AI参数配置
#define DEFAULT_AI_DEPTH 3
#define MAX_AI_DEPTH 6
#define AI_TIMEOUT_MS 5000
// 网络配置
#define DEFAULT_PORT 8888
#define BUFFER_SIZE 1024
#define MAX_IP_LENGTH 16
// 评分参数
#define SCORE_FIVE 100000
#define SCORE_LIVE_FOUR 10000
#define SCORE_RUSH_FOUR 1000
2. 全局变量统一管理
重构前状态
- 全局变量分散在各个源文件中
- 缺乏统一的声明和定义管理
- 变量作用域不清晰
- 初始化逻辑分散
重构措施
- 创建globals模块:新建
globals.h和globals.c文件 - 集中声明:在
globals.h中统一声明所有全局变量 - 集中定义:在
globals.c中统一定义和初始化 - 访问规范化:通过包含
globals.h访问全局变量
全局变量分类
// 游戏状态变量
extern int current_board[MAX_BOARD_SIZE][MAX_BOARD_SIZE];
extern int current_player;
extern int game_over;
// 配置变量
extern GameConfig game_config;
extern AIConfig ai_config;
extern NetworkConfig network_config;
// 统计变量
extern GameStats game_stats;
extern int total_games_played;
3. 类型定义标准化
重构前状态
- 结构体定义分散在各个头文件中
- 类型定义不统一
- 缺乏标准的数据结构规范
重构措施
- 创建type.h:集中定义所有数据结构和类型
- 标准化命名:采用统一的命名规范
- 逻辑分组:按功能对类型进行分组
- 文档化:为每个类型添加详细注释
类型定义结构
// 基础类型定义
typedef enum {
PLAYER_NONE = 0,
PLAYER_BLACK = 1,
PLAYER_WHITE = 2
} PlayerType;
// 游戏配置结构
typedef struct {
int board_size;
int ai_level;
int enable_forbidden;
int time_limit;
} GameConfig;
// 网络消息结构
typedef struct {
int type;
int x, y;
int player;
char data[256];
} NetworkMessage;
4. 网络配置重构
具体实施
- 迁移宏定义:将
network.h中的配置宏移动到config.h - 统一命名:规范网络相关宏的命名
- 添加引用:在
network.h中添加#include "config.h" - 消息类型统一:将消息类型定义集中管理
迁移的配置项
// 从network.h迁移到config.h
#define DEFAULT_PORT 8888
#define BUFFER_SIZE 1024
#define MAX_IP_LENGTH 16
#define MSG_MOVE 1
#define MSG_CHAT 2
#define MSG_SURRENDER 3
#define MSG_DISCONNECT 4
📊 重构效果评估
代码质量提升
- 模块耦合度降低:各模块职责更加清晰
- 代码重复减少:消除了重复的宏定义和类型定义
- 可读性增强:统一的命名规范和代码结构
- 维护性提高:集中管理使得修改更加便捷
开发效率提升
- 配置修改便捷:只需在一个地方修改配置参数
- 调试更容易:全局变量集中管理,状态更清晰
- 扩展更简单:标准化的接口和数据结构
- 错误减少:统一管理避免了不一致性错误
性能影响
- 编译时间:略有增加(由于更多的头文件包含)
- 运行时性能:无显著影响
- 内存使用:无显著变化
- 整体评估:性能影响微乎其微,收益远大于成本
🔧 技术细节
文件结构变化
新增文件
type.h- 类型定义集中文件globals.h- 全局变量声明文件globals.c- 全局变量定义文件
修改文件
config.h- 扩展为完整的配置管理文件network.h- 移除配置定义,添加config.h引用- 所有源文件 - 更新头文件包含关系
编译依赖关系
type.h (基础类型)
↓
config.h (配置参数)
↓
globals.h (全局变量声明)
↓
各功能模块头文件
↓
源文件实现
包含关系规范
- type.h:被所有需要类型定义的文件包含
- config.h:被所有需要配置参数的文件包含
- globals.h:被所有需要访问全局变量的文件包含
- 功能模块头文件:按需包含上述基础头文件
📝 最佳实践
配置管理
- 新增配置参数:统一添加到
config.h的相应分组中 - 命名规范:使用描述性的宏名称,避免缩写
- 分组管理:按功能模块对配置进行逻辑分组
- 文档注释:为每个配置参数添加清晰的注释
全局变量管理
- 声明规范:在
globals.h中使用extern声明 - 定义规范:在
globals.c中进行实际定义和初始化 - 访问规范:通过包含
globals.h访问,避免重复声明 - 初始化管理:在
globals.c中集中进行初始化
类型定义管理
- 命名规范:使用PascalCase命名结构体和枚举
- 分组管理:按功能对类型进行逻辑分组
- 文档化:为每个类型和字段添加详细注释
- 版本兼容:考虑结构体的向后兼容性
🚀 未来扩展
短期计划
- 配置文件增强:支持更多配置项的动态加载
- 类型安全增强:添加更多的类型检查和验证
- 模块接口标准化:定义标准的模块接口规范
长期规划
- 插件架构:基于当前架构实现插件系统
- 配置热重载:支持运行时配置的动态更新
- 跨平台适配:利用统一架构实现跨平台支持
📚 参考资料
相关文档
工具推荐
- 静态分析:使用cppcheck进行代码质量检查
- 格式化:使用clang-format统一代码格式
- 文档生成:使用Doxygen生成API文档
📈 总结
v7.0版本的代码架构重构是一次重要的技术升级,通过系统性的重构实现了:
✅ 配置参数的统一管理 - 提高了配置的一致性和可维护性
✅ 全局变量的规范化 - 降低了代码的复杂度和耦合度
✅ 类型定义的标准化 - 增强了代码的可读性和类型安全
✅ 模块结构的优化 - 为后续功能扩展奠定了坚实基础
这次重构不仅解决了当前的技术债务,更为项目的长期发展提供了良好的架构基础。后续的功能开发将能够更加高效和稳定地进行。
本文档将随着项目的发展持续更新,记录架构演进的每一个重要节点。