# 编程规范 为了保持程序的通用性、扩展性和兼容性,代码设计应遵循以下原则: 1. 模块化设计:将功能分解为独立的模块或类,每个模块或类应专注于单一职责。避免将多个不相关的业务逻辑集中在一个类或函数中。 2. 高内聚低耦合:确保每个模块或类内部的元素紧密相关(高内聚),同时减少模块或类之间的依赖关系(低耦合)。这样可以使代码更易于维护和扩展。 3. 单一职责原则:每个函数或方法应只执行一个最小化的任务。如果一个函数或方法包含多个步骤,应考虑将其分解为多个更小的函数或方法。 4. 按需创建:根据业务需求决定是否创建新的文件、类或函数。如果现有类或函数无法满足新的需求,应考虑创建新的类或函数,而不是在现有代码中添加额外的逻辑。 5. 继承与组合:合理使用继承和组合来增强代码的复用性和扩展性。优先使用组合而非继承,以避免过度复杂的继承层次。 6. 注释与文档:为每个模块、类和函数添加适当的注释,说明其功能、输入输出以及使用场景。这有助于其他开发者理解和使用你的代码。 7. 接口与抽象:定义清晰的接口和抽象基类,以便在不同实现之间保持兼容性。通过接口或抽象类来定义通用的行为,具体的实现可以在子类中完成。 8. 可扩展性:在设计时考虑未来的扩展需求,避免硬编码和过度依赖特定实现。使用配置文件、依赖注入等方式来提高代码的灵活性。 9. 兼容性:在修改或扩展代码时,确保新代码与旧代码兼容,避免破坏现有功能。可以通过版本控制、接口隔离等方式来管理兼容性问题。 # 项目说明: - 测试模块在 tests 的目录中, `tests\mytest` 是我私人的草稿,不用理会 ## 轮询架构 我的场景中,Worker 是多机分布部署的,任务执行时间较长,且可能因错误被终止。为了确保任务的可追踪性和实时性,设计一个能够实时监控任务进度、记录失败点并支持任务恢复的系统是非常重要的。以下是针对你的需求的优化设计方案: --- ### **三、推荐方案** 结合你的需求(实时性、任务恢复、多机部署),推荐以下方案: 1. **任务进度存储**: - 使用 **中心化数据库(SQL Server)** 实时存储任务进度,确保数据可靠性和任务可恢复性。 2. **任务监控**: - 使用 **WebSocket 实时推送** 或 **Redis Pub/Sub** 实现任务进度的实时监控,避免轮询的开销。 3. **错误处理**: - 在数据库中记录任务失败时的页码和错误信息,支持从失败点继续执行。 --- ### **四、示例架构** ``` +----------------+ +-----------------+ +----------------+ | Worker 1 | | Worker 2 | | Worker N | | (更新进度) | | (更新进度) | | (更新进度) | +-------+--------+ +--------+--------+ +--------+-------+ | | | | | | | | | +-------v-------------------------v-------------------------v-------+ | Redis Pub/Sub | | (实时广播任务进度) | +-----------------------------------+-------------------------------+ | | +-----------------------------------v-------------------------------+ | Master (WebSocket) | | (接收进度更新,存储到数据库) | +-----------------------------------+-------------------------------+ | | +-----------------------------------v-------------------------------+ | SQL Server | | (存储任务进度、失败信息) | +-------------------------------------------------------------------+ ```