【保姆级喂饭教程】idea开发TODO规范

目录

  • 前言
  • [一、为什么大多数 TODO 都烂尾?](#一、为什么大多数 TODO 都烂尾?)
  • 二、TODO规范
    • [1. IDEA 自定义 TODO 模板](#1. IDEA 自定义 TODO 模板)
      • [1.1 单行TODO注释](#1.1 单行TODO注释)
      • [1.2 测试](#1.2 测试)
      • [1.3 多行TODO注释](#1.3 多行TODO注释)
      • [1.4 单行FIXME注释](#1.4 单行FIXME注释)
    • [2. IDEA 自定义过滤器](#2. IDEA 自定义过滤器)
      • [2.1 个人TODO过滤器](#2.1 个人TODO过滤器)
      • [2.2 测试](#2.2 测试)
      • [2.3 个人高优先级过滤器](#2.3 个人高优先级过滤器)
      • [2.4 测试](#2.4 测试)
  • 后记
  • 参考文献

前言

在进行软件开发过程中,我们经常会遇到需要记录下一些待办事项的情况。这些待办事项可以是代码中的缺陷、优化点、需要添加的功能等。为了更好地组织和管理这些待办事项,我们需要遵循一定的规范来标记和处理它们。

一、为什么大多数 TODO 都烂尾?

常见写法 结局
// TODO 永远没人修
// TODO 优化性能 3 个月后连作者都忘了要干啥
// FIXME 这里会崩 上线真的崩了,定位 2h

一句话:没有"详细描述 + 责任人 + 优先级"的 TODO 都是耍流氓。

开个玩笑,只是个人建议。


二、TODO规范

接下来我们通过制定一套TODO规范,使得团队协作更加标准高效。
IDEA官网 TODO comments

1. IDEA 自定义 TODO 模板

1.1 单行TODO注释

点击 File -> Settings

依次选择 Editor -> Live Templates,点击右边的加号,选择新增一个实时模板

会自动创建一个 user 分组,然后再创建实时模板

也可以在上一步选择 Template Group 创建一个自定义模板分组,再创建实时模板

输入模板缩写 td 和描述 Create Single-line TODO comment

输入模板规范,个人推荐格式为 TODO [日期][用户][优先级]: 描述 ,实时模板中通过$$定义变量

java 复制代码
// TODO [$DATE$][$USER$][$PRIORITY$]: $DESC$

定义了变量后还需要编写对应的表达式,idea内置了许多函数,点击Expression下面的单元格会显示下拉框按钮

  • 日期选择date()
  • 用户有对应的user(),但这个方法获取的是系统用户名,一般不是想要的,这里通过enum(...)枚举填充用户名,注意用户名要加引号
  • 优先级填入enum("P0","P1","P2","P3","P4"),之后可以通过下拉框挑选,默认值经过测试没有用

优先级选项解释如下,也可以直接按照5级重要性使用

优先级 说明 重要性
P0 当日内完成 重要紧急
P1 三日内完成 重要
P2 七日内完成 高
P3 一月内完成 中
P4 未来完成 低

最后给日期和用户的Skip if defined选项勾上,这样生成模板的时候光标就会自动跳过这两项

此时模板还不生效,因为没有设置应用范围,点击下方No applicable contexts右边的Define,直接选择Everywhere,之后点击ok

1.2 测试

简单测试一下,输入td,下面第一行就是,直接回车

回车后由于前两项设置了跳过,会直接跳到第三项优先级,按上下进行选择,按enter或者tab确认

由于描述未设置任何函数,直接输入即可,输入后回车完成TODO记录

1.3 多行TODO注释

有时候的计划一句话解释不清楚,就需要多行TODO注释了

设置流程相同,只是调整下模板,因为多行注释的第一行TODO需要紧挨着//,不能有空格

模板可根据自己需求进行调整

java 复制代码
//TODO [$DATE$][$USER$][$PRIORITY$]: $DESC$
// 需求:$REQUIRE$
// 实现:$CODE$
// 测试:$TEST$
$END$

还需要打开多行TODO注释设置,打开 Editor -> TODO,勾上Treat indented text on the following lines as part of the same TODO前面的勾选框,点击确定,表示将以下行中的缩进文本视为同一TODO的一部分

1.4 单行FIXME注释

除了todo,idea中还内置了fixme,用于记录bug,我们也创建一个规范模板

选中td模板,点击右边的复制,即可快速生成同类模板,改下缩写和描述,就可以确定了

多行FIXME注释有需要自己创建就好了

2. IDEA 自定义过滤器

当不同人员不同等级的TODO变多以后,查找想要的TODO将会变得麻烦,idea中提供了过滤器,帮助我们解决这一问题。

2.1 个人TODO过滤器

打开 Editor -> TODO,刚刚我们在这里设置过多行注释,下面分为两部分,上面是TODO的正则列表,下面是基于正则创建的过滤器,默认有一个基本的匹配所有TODO/FIXME的正则和基于它的过滤器

先创建一个个人正则,这个应用于我上面的规范,如果规范模板调整了,这里的正则也需自行调整

regex 复制代码
\b(todo|fixme)\b\s*\[[^\[]*\]\[zcy\].*

正则面板还有很多设置,下面是匹配大小写,默认颜色使用idea内置的,取消勾选可以自己设置背景色、字体色等等

接下来创建对应的过滤器,点击Filters右边的加号,填写过滤器名称,勾选正则,这里可以组合勾选,点击确定

2.2 测试

插入5条不同等级和用户的todo

点击下方工具栏的TODO窗口,可以看到5条都在

点击筛选按钮,切换到默认的myTODO,按理来说应该还是5条吧,可以看到就只剩一条了

因为idea这里的过滤器是连续过滤,切换到zcy过滤器,可以看到匹配到的4条

相当于myTODO过滤器先把所有的5条都匹配到,zcy过滤器又在此基础上匹配走了4条,下面我们再添加一个更严格的过滤器验证一下

2.3 个人高优先级过滤器

我们再创建一个满足个人条件的,优先级为P0和P1的TODO

regex 复制代码
\b(todo|fixme)\b\s*\[[^\[]*\]\[zcy\]\[P[01]\].*

同时把myTODO改为更合适的others

2.4 测试

All

others

zcy

zcy-P0/1

确实是连续过滤的,大家还有别的需求可以自己编写正则,再自定义过滤器


后记

TODO可以提供我们的开发效率,更快的帮我们找到代码。我们可以使用idea默认的方式。

但是如果想要更加规范的话,我们可以配置一个模板来使用。

当多人开发TODO标记很多的时候,为了方便自己快速找到想要的标记,我们可以配置一个TODO的过滤器来帮助我们筛选标记。

以上就是我关于TODO的总结,希望能帮助到大家!

参考文献

IDEA官网 TODO comments


喜欢的点个关注吧><!祝你永无bug~

txt 复制代码
/*
                   _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---'\____
             .'  \\|     |//  `.
            /  \\|||  :  |||//  \
           /  _||||| -:- |||||-  \
           |   | \\\  -  /// |   |
           | \_|  ''\---/''  |   |
           \  .-\__  `-`  ___/-. /
         ___`. .'  /--.--\  `. . __
      ."" '<  `.___\_<|>_/___.'  >'"".
     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
     \  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======
                   `=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            佛祖保佑       永无BUG
*/
相关推荐
ym hyd 1112 小时前
试题库管理系统源码 Java+SpringBoot+Vue3 前后分离
java·vue.js·spring boot·毕设
AC赳赳老秦2 小时前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
钱栈up2 小时前
mvn compile 卡死在 javac 阶段:一次类型不匹配的排查与修复
java·开发语言
吠品4 小时前
CSS图片模糊过渡:一个transition加filter就够
java·数据库·notepad++
步行cgn4 小时前
Spring 全注解开发详解
java·后端·spring
长河5 小时前
Java的GC(垃圾回收)中,标记无用对象的核心方法是可达性分析算法
java·jvm·算法
code2cat5 小时前
Java进阶篇之LongAdder:把统计更新分散,再读取总和
java·并发编程·原子类·longadder
凯哥Java5 小时前
写代码怎么避免逻辑漏洞?
java·开发语言·人工智能·自动化
Ivanqhz5 小时前
正余弦位置编码(Sinusoidal Positional Encoding)
java·linux·数据库
BD_Marathon5 小时前
消息对象中字段的说明
java·前端·python