【保姆级喂饭教程】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 个人高优先级过滤器

我们再创建一个满足个人条件的,优先级为P0P1的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
*/
相关推荐
帅到爆的努力小陈2 分钟前
Java集合框架中List常见问题
java·集合·list集合·java-list
秋千码途1 小时前
小架构step系列17:getter-setter-toString
java·开发语言·架构
吃西瓜不吐籽_2 小时前
Mac 安装及使用sdkman指南
java·笔记
focksorCr2 小时前
在VsCode上使用开发容器devcontainer
ide·vscode·编辑器
晨启AI2 小时前
Trae IDE:打造完美Java开发环境的实战指南
java·环境搭建·trae
Lum11042 小时前
PyCharm高效入门指南大纲
ide·python·pycharm
C雨后彩虹2 小时前
行为模式-策略模式
java·设计模式·策略模式
Ashlee_code2 小时前
美联储降息趋缓叠加能源需求下调,泰国证券交易所新一代交易系统架构方案——高合规、强韧性、本地化的跨境金融基础设施解决方案
java·算法·金融·架构·系统架构·区块链·需求分析
西奥_2 小时前
【JVM】运行时数据区域
java·jvm
lgx0406051122 小时前
Maven详细解
java·maven