|
1 | 1 | # CLAUDE.md |
2 | 2 |
|
3 | | -这个文件为 Claude Code (claude.ai/code) 在此代码仓库中工作时提供指导。 |
| 3 | +# 任何项目都务必遵守的规则(极其重要!!!) |
| 4 | +## Communication |
| 5 | +- 永远使用简体中文进行思考和对话 |
| 6 | + |
| 7 | +## Documentation |
| 8 | +- 编写 .md 文档时,也要用中文 |
| 9 | +- 正式文档写到项目的 docs/ 目录下 |
| 10 | +- 用于讨论和评审的计划、方案等文档,写到项目的 discuss/ 目录下 |
| 11 | + |
| 12 | +## Code Architecture |
| 13 | +- 代码必须简单清晰,易于理解 |
| 14 | +- 编写代码的硬性指标,包括以下原则: |
| 15 | + (1)对于 Python 等动态语言,尽可能确保每个代码文件不要超过 300 行 |
| 16 | + (2)对于 C++ 、C 等静态语言,尽可能确保每个代码文件不要超过 400 行 |
| 17 | + (3)每层文件夹中的文件,尽可能不超过 8 个。如有超过,需要规划为多层子文件夹 |
| 18 | +- 除了硬性指标以外,还需要时刻关注优雅的架构设计,避免出现以下可能侵蚀我们代码质量的「坏味道」: |
| 19 | + (1)僵化 (Rigidity): 系统难以变更,任何微小的改动都会引发一连串的连锁修改。 |
| 20 | + (2)冗余 (Redundancy): 同样的代码逻辑在多处重复出现,导致维护困难且容易产生不一致。 |
| 21 | + (3)循环依赖 (Circular Dependency): 两个或多个模块互相纠缠,形成无法解耦的“死结”,导致难以测试与复用。 |
| 22 | + (4)脆弱性 (Fragility): 对代码一处的修改,导致了系统中其他看似无关部分功能的意外损坏。 |
| 23 | + (5)晦涩性 (Obscurity): 代码意图不明,结构混乱,导致阅读者难以理解其功能和设计。 |
| 24 | + (6)数据泥团 (Data Clump): 多个数据项总是一起出现在不同方法的参数中,暗示着它们应该被组合成一个独立的对象。 |
| 25 | + (7)不必要的复杂性 (Needless Complexity): 用“杀牛刀”去解决“杀鸡”的问题,过度设计使系统变得臃肿且难以理解。 |
| 26 | +- 【非常重要!!】无论是你自己编写代码,还是阅读或审核他人代码时,都要严格遵守上述硬性指标,以及时刻关注优雅的架构设计。 |
| 27 | +- 【非常重要!!】无论何时,一旦你识别出那些可能侵蚀我们代码质量的「坏味道」,都应当立即询问用户是否需要优化,并给出合理的优化建议。 |
| 28 | + |
| 29 | + |
| 30 | +## Run & Debug |
| 31 | +- 必须首先在项目的 scripts/ 目录下,维护好 Run & Debug 需要用到的全部 .sh 脚本 |
| 32 | +- 对于所有 Run & Debug 操作,一律使用 scripts/ 目录下的 .sh 脚本进行启停。永远不要直接使用 npm、pnpm、uv、python 等等命令 |
| 33 | +- 如果 .sh 脚本执行失败,无论是 .sh 本身的问题还是其他代码问题,需要先紧急修复。然后仍然坚持用 .sh 脚本进行启停 |
| 34 | +- Run & Debug 之前,为所有项目配置 Logger with File Output,并统一输出到 logs/ 目录下 |
| 35 | + |
| 36 | +## Python |
| 37 | +- 数据结构尽可能全部定义成强类型。如果个别场景不得不使用未经结构化定义的 dict,需要先停下来征求用户的同意 |
| 38 | +- Python 虚拟环境永远使用 .venv 作为目录名 |
| 39 | +- 必须使用 uv,而不是 pip、poetry、conda、python3、python。包括依赖管理、构建、调试启动等所有环节 |
| 40 | +- 项目的根目录必须保持简洁,只保留必须存在的文件 |
| 41 | +- main.py 内容也要简洁。只保留必须存在的代码 |
| 42 | +- 每一个.py文件都必须包含一个Main函数,用于测试当前文件是否能正常运行。 |
| 43 | + |
| 44 | +## C++ |
| 45 | +- 代码风格遵循 Google C++ Style Guide |
| 46 | +- |
| 47 | +## 依赖 |
| 48 | + |
| 49 | +## 输出 |
| 50 | +- 输出内容必须使用简体中文 |
| 51 | +- 输出PROJECT_STATUS.md 必须包含项目的主要功能、特性、优势、局限性等信息.包括每次更新的主要变化、优化点、新功能等。 |
| 52 | + |
4 | 53 |
|
5 | | -## 项目概述 |
6 | 54 |
|
| 55 | +## 项目概述 |
7 | 56 | SimpleSensorSync 是一个为机器人和传感器融合系统设计的多传感器同步解决方案。它使用专用同步板为相机、激光雷达、IMU 和 GPS 等各种传感器提供精确的时间协调。 |
8 | 57 |
|
9 | 58 | ## 架构 |
@@ -98,4 +147,4 @@ cd build/tools/monitor |
98 | 147 | - 主要厂商的工业相机 (PWM 同步) |
99 | 148 | - 3D 激光雷达传感器 (PPS 同步) |
100 | 149 | - IMU 设备 (PWM 同步) |
101 | | -- GPS/RTK 系统 (NMEA 同步) |
| 150 | +- GPS/RTK 系统 (NMEA 同步) |
0 commit comments