TODO 表示计划要做的事,不涉及当前功能缺陷;FIXME 表示必须修复的问题,当前存在缺陷或隐患;二者语义明确、格式统一、需配合工具与团队规范落地。

TODO 和 FIXME 都是代码注释中的特殊标记,用于标识待办事项或问题代码,但它们的语义和使用场景有明确区别。规范使用能提升团队协作效率、降低维护成本,并让代码审查和重构更有针对性。
TODO:表示“计划要做的事”,不涉及当前功能缺陷
TODO 用于标记尚未实现、但不影响当前逻辑正确性的功能点或优化项,比如未来要加的特性、可选的性能改进、需要补充的文档等。它不是 bug,也不阻碍运行。
- 格式统一为 // TODO: 描述内容(建议附带责任人或截止线索,如 @zhangsan / v2.5)
- 避免空泛描述,例如 “// TODO: 优化” 应改为 “// TODO: 将数组遍历改为 Set 查找,提升重复校验性能”
- 定期清理过期 TODO,长期未处理的应评估是否仍有必要,或转为需求任务跟踪
FIXME:表示“必须修复的问题”,当前存在缺陷或隐患
FIXME 专用于标记已知错误、临时绕过、危险写法或违反约束的代码,比如硬编码、竞态条件、未处理的边界情况、兼容性降级等。它意味着这段代码现在就不可靠,需优先修复。
- 格式统一为 // FIXME: 说明具体问题 + 建议修复方向(如 “FIXME: token 过期后未刷新,导致后续请求 401”)
- 禁止用 FIXME 掩盖设计缺陷,例如不应写 “FIXME: 这里用了全局变量” 而不重构模块状态管理
- CI 流程中可配置扫描 FIXME 注释并阻断合并(尤其在主干分支),确保问题不被遗漏
其他常见标记与使用建议
除了 TODO 和 FIXME,还可酌情使用 HACK(临时方案)、NOTE(关键设计说明)、XXX(紧急高亮),但应控制种类数量,避免稀释重点。
立即学习“Java免费学习笔记(深入)”;
- 所有标记统一用大写 + 冒号,保持视觉一致性,便于工具识别(如 IDE 高亮、ESLint 插件 todo-list)
- 不跨行写标记注释;若需详细说明,另起普通注释段落,标记行只保留核心信息
- 提交前检查新增标记是否必要,避免把调试日志、废弃代码块误标为 TODO/FIXME
工具辅助与团队约定
单靠人工难以持续维护标记质量,建议结合工程化手段落地规范:
- 在 ESLint 中启用 no-warning-comments 规则,对 FIXME 强制报错,对 TODO 提示警告
- 用 VS Code 插件(如 Todo Tree)聚合显示所有标记,并按文件/严重程度排序
- 在团队 Wiki 明确定义每种标记的含义、使用边界和响应 SLA(如 FIXME 需在 24 小时内建 Issue)










