.clinerules-code 4.3 KB

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