• 一 TODO 简介
  • 二 Android Studio TODO 用法
    • 添加 TODO
    • 查看 TODO
    • 完成 TODO
  • 三 Android Studio FIXME 用法
    • 添加 FIXME
    • 筛选 FIXME
  • 四 自定义 TODO
    • 自定义重构 TODO REFACTOR
    • 添加代码模版 Live Template
    • 在代码中使用 REFACTOR TODO
  • 五 结束

在开始之前,我们先来看看开发过程中常会碰到的一些问题:

  • 这块代码好几次用到了,应该抽出去;
  • 这个算法可以换个更高效的写法;
  • 这段逻辑绕来绕去,其实可以换个思路。
  • ……

相信许多人都遇到过这些情况,那么,此时我们该怎么做呢?

呵,这还用问?

  • 重复代码? 顺手就抽出去了;
  • 算法效率堪忧? 你倒是优化啊;
  • 逻辑不清晰? 还不赶紧重构,等啥。

如果你也是这么想,我觉得要么你就没参与过实际项目开发,要么你就等着项目 delay 被吊打吧。

要知道,大多数公司的开发周期都很紧,我们应该沿着主线任务推进,先保证新的需求实现了,主要功能能够 work 并自测通过了,时间富余的情况下再去想着优化或者重构代码。

你表示不服:说的倒好,时间富余再去优化。那要没有富余时间呢,就不优化了?

不能这么说,你想,如果按照我说的先实现新需求、自测,再优化的步骤,你没有富余时间说明啥?说明开发时间正好够我们新增需求,那你要是在开发过程中去干了优化的事,那需求还能做完吗?没毛病…

所以我们要搞清楚,对于这些问题,应该先标记着,等主线任务开发完了,再去优化。而不是管他三七二十一,撸起袖子就整,整不好就没法收尾,甚至引发其它问题,我是认真的(经历过的人自然懂)。

这里提到的标记着以后再做,就涉及到我们今天要说的 TODO 的概念。

说了半天还没开始,且息怒,之所以先铺垫,是想让一些没有接触过、或者刚接触实际开发项目的同学,明白为什么要像下文那么做。

一、 TODO 简介

大家应该都用过记事或备忘软件,或者是番茄记事之类的,一般这种软件都有一个功能叫 “TODO list”。什么意思呢?就是待做清单。

我们在日常生活中,经常想起来要做一件事,但手头正忙来不及做,就会先记在 “TODO list” 中,等忙完手头的事或者下班后看看记了哪些,然后去做。

开发中也是这样,遇到像上面那些问题,我们应该先记下来:

  • 重复代码? 先标记上,回头抽出去;
  • 算法效率堪忧? 先标记上,回头优化;
  • 逻辑不清晰? 先标记上,回头重构。

这里说的标记,并不是在记事软件上记下来:标注上要做什么,在哪个类哪一行,这太扯了。而是利用 Android Studio 提供的 TODO 功能来实现这一需求。

二、 Android Studio TODO 用法

在 Android Studio 中,支持通过 TODO 在代码中插入标记,其本质上就是特殊的注释。只不过 TODO 注释能够在 Android Studio 提供的 TODO 视图窗口中查看并快速定位。

1. 添加 TODO

当然,你也可以在方法内部对某一行代码添加 TODO。

2. 查看 TODO

在 Android Studio 右下角中有一个 TODO tab,点击即可打开 TODO 视图,来查看项目中标记的 TODO。

如果没有 TODO tab,你可以通过左上角的菜单打开:View -> Tool windows -> TODO。

3. 完成 TODO

完成 TODO 标记的事件后,就可以删除该 TODO 注释。 理想状态下,我们应该在每一版本发版前,完成所有 TODO,以保持 TODO 视图中没有遗留的事项,也只是理想状态…

三、 Android Studio FIXME 用法

除了 TODO 标记,我们还可以使用 Android Studio 提供的 FIXME 来标记一些待修复的问题,FIXME 与 TODO 在本质上没有任何区别,只是不同的标记罢了。区别于 TODO 标记,FIXME 可以认为是偏向于标记存在问题的 TODO 事项。

一句话弄清二者区别: TODO 是总称,FIXME 是细分。

1. 添加 FIXME

其用法同 TODO,添加时如下:

然后同样在 TODO 视图中可以看到:

2. 筛选 FIXME

但是,当项目中 TODO 和 FIXME 较多且混在一起时,找起来可就比较费尽了,此时我们可以使用 “过滤” 功能来区分开 TODO 和 FIXME。

首先,添加过滤 FIXME 的条件,点击 TODO 窗口左侧的漏斗,选择 Edit Filters,按照图示添加 FIXME 过滤条件:

添加完毕后,再次点击漏斗,选择刚才添加的 FIXME 过滤条件,在 TODO 视图中将只会看到 FIXME 标记的 TDOO 事项:

最后,就是解决 FIXME 并删除了,不再赘述。

四、 自定义 TODO

一般我们习惯于直接用 TODO 来标记所有待办事项,但 TODO 是总称,比较广义,所有 “待办事项” 都可以用 TODO 标记。当项目中有大量 TODO 时,你会发现无法快速定位要找的 TODO,或者无法区分该 TODO 到底属于哪种类型(虽然可以添加描述,但这个描述的作用太弱了,无法筛选)。

下面举个栗子,在开发过程中,我们经常发现一些遗留代码可以重构,此时我们不可能立即着手去做,应该通过 TODO 去标记:

// TODO: 2017/5/1 待重构
  • 1

但是,这样的 TODO 不容易识别,也无法筛选,后期只能通过附加的描述 “待重构” 去判断。此时,按照 FIXME 是 TODO 的细分的逻辑,我们不仅会问:

是不是可以自定义一个细分 TODO ,来标记重构?

答案是肯定的。

1. 自定义重构 TODO: REFACTOR

其实,TODO 的本质就是满足特定正则的注释,这样说就好理解了。

通过右上角的菜单, File -> Settings -> Editor -> TODO 打开 TODO 设置面板,点击右上方的 + 添加一个正则,如图:

Pattern 中输入正则表达式 \brefactor\b.*,然后选择一个 Icon(可选),点击 OK 关闭添加面板,再次点击 OK 应用并关闭设置面板。

添加完 REFACTOR 类型的 TODO 之后,你迫不及待想试试,但发现不管怎样系统都没有智能提示以补全代码,心想我在坑你。其实不然,TODO 标记和智能提示是两码事。

你添加了一个自定义的 TODO 正则,系统匹配后将其视为 TODO,在代码中高亮并显示在 TODO 视图中;而智能提示和自动补齐是 代码模版 的功能。不是一回事,明白吗?

你在代码中纯手敲一个 REFACTOR 的 TODO 也不是不可以,只不过这样效率太低了。

// REFACTOR: 2017/5/1 待重构 
  • 1

下面,跟随我一起添加一个 REFACTOR 的代码模版吧。

2. 添加代码模版 Live Template

通过右上角的菜单, File -> Settings -> Editor -> Live Templates 打开代码模版设置页面,找到 AndroidComments 并展开,你会发现熟悉的 fixmetodo,我们就仿着它们添加我们的代码模版。不了解的同学可以点击右下角 Help 简单学习下。

1.点中 AndroidComments,点击右上角 +,选择 Live Template

2.在下方出现的面板中填上对应内容,分别是:缩写、描述、模版文本。

  • 缩写:我们在代码中敲对应缩写,就会出现智能提示;
  • 描述:智能提示时的描述;
  • 模版文本:缩写对应的补齐后的文本(不局限于代码),在这可以声明变量;

此处我填写内容如下:

3.在模版文本中,我们使用 date 声明了描述代办的变量,变量是用来占位的。那这两个变量到底如何赋值呢?

注意右侧的 Edit variables,即编辑变量。点击该按钮,打开 “Edit Template Variables” 面板。表格中,四列分别对应了:变量名称、表达式、默认值、如果已定义则跳过。具体的使用方法,同样可点击右下角的 Help 看一下,这不是本文的重点。看看我最后设置的值:

此处,我将 date 变量的表达式设为 date(),系统将会使用当前日期来填补该变量的占位,并勾选 “跳过” 选项,表示有值的话就不再自己编辑。

同时,对于 todo 变量,是用来添加描述的,无法使用表达式赋值,所以我选择了赋予默认值 “待重构”,并且没有勾选 ” 跳过”。这样的话,系统会默认为我赋值 “待重构”,但我的光标还会定在那儿,我可以继续编辑,或者回车使用默认值。

这块不好理解的话可以看后面的 gif 动图,就明白了。

4.编辑变量后,点击 OK 返回上一页,最后还需要定义该模版运用的上下文,也就是在哪些地方可以通过缩写调出代码模版。

在界面下方,有一段文本:No applicable contexs yet. 后面跟着一个 Define,点击就会弹出设置模版运用上下文的列表。我们一般是在 Java 代码中添加 REFACTOR TODO,所以全选 Java,当然你也可以按需选择。

5.最后勾选右侧的 Refactor according to style,表示自动格式化代码(调整对齐、缩进等),点击右下角 ‘OK’,运用该模版并退出。

最终效果是这样的:

点击右下角 OK,运用该模版并退出。

3 在代码中使用 REFACTOR TODO

在需要添加重构标识的地方,输入 refactor,输入过程中,智能提示就出来了,回车确认即可。

至此我们就成功添加了一个 REFACOR 类型的 TODO。下面看演示,我输入慢点,注意看我们在上面提到的 默认值跳过 ,在代码补齐时对 日期和描述 的影响:

区别于之前的 todo 和 fixme,自动补齐时加上了默认描述”待重构”,你可以继续输入覆盖,或者直接回车确认。

和 TODO、FIXME 一样,代码高亮并出现在 TODO 视图中。

五、 结束

至此,有关 TODO 用法及自定义 TODO 全部介绍完毕,希望对你有所帮助,并在实际开发中举一反三。最后,感谢转发分享,并发表你的看法。

转载自:http://blog.csdn.net/My_TrueLove/article/details/72857949

Android studio中todo的用法相关推荐

  1. Android studio中广播的用法

    目录 1.动态方法: 2.静态注册广播 3.发送和接收自定义广播 4.跨程序接收广播 广播有两种,静态广播和动态广播. 1.动态方法: 重写广播接收器,用来接受广播,并根据接受到的广播进行操作.可以在 ...

  2. 在Android Studio中搜索整个项目中所有出现的字符串

    本文翻译自:Search all the occurrences of a string in the entire project in Android Studio I've just start ...

  3. Android开发——Android Studio中配置及使用OpenCV示例

    from: http://www.mobile-open.com/2015/86176.html 本文主要讲述了Android Studio中配置及使用OpenCV示例,现在整理出来分享给Androi ...

  4. 【Android Protobuf 序列化】Protobuf 使用 ( protobuf-gradle-plugin 插件简介 | Android Studio 中配置插件 | AS 中编译源文件 )

    文章目录 一.protobuf-gradle-plugin 插件简介 二.Android Studio 中配置 protobuf-gradle-plugin 插件 三.Android Studio 中 ...

  5. 【CMake】Android Studio 中使用 CMake 编译单个 C++ 源文件 ( 常用的 CMake 命令解析 )

    文章目录 一.Android Studio 中使用 CMake 编译单个 C++ 源文件 二.cmake_minimum_required 命令设置最小 CMake 版本 三.project 命令设置 ...

  6. android studio 自动生成对象,在Android Studio中快速导入可绘制对象的方法?

    在Android Studio中快速导入可绘制对象的方法? 在Android项目中的某个时候,您将需要在res/drawable目录中导入一些可绘制对象-工具栏图标,图像,UI功能. 大多数情况下,您 ...

  7. 浅谈Windows下SVN在Android Studio中的配置、基本使用及解除关联

    看到网上很多关于svn环境配置和关联Android-Studio的很多博文,发现很零散,想集大家所长整理一下: 在AndroidStudio中开发版本控制中,除了Git就是SVN,和Eclipse不同 ...

  8. android studio 导入包分不分动态静态,详解Android studio 动态fragment的用法

    fragment的使用时Android的基础,它有两种用法,第一个就是静态的fragment.第二个则是动态的fragment. 静态fragment直接在layout创建你想要的fragment的X ...

  9. android studio 打开pdf,从Android Studio中的手机浏览pdf

    我需要创建一个应用程序,包括从手机浏览pdf然后阅读(稍后将执行,一旦浏览部分完成),我遇到了代码问题.我已经通过下面的链接我的计算器找到了,但遗憾的是它不工作, Browse and upload ...

最新文章

  1. SQL AUTO INCREMENT 字段
  2. android游戏加载,Android 游戏引擎libgdx 资源加载进度百分比显示案例分析
  3. request.getServletContext()
  4. Python 计算机视觉(十一)—— OpenCV 图像形态学处理
  5. JavaScript正则表达式的坑很深
  6. Action三种编写方式
  7. 虚拟机访问本地mysql_MySQL高可用之主从复制
  8. 魅族2016Java互联网方向其中一道笔试题--青蛙跳台阶问题
  9. PHP Excel导入数据到MySQL数据库
  10. refs格式linux支持么,小科普 | 你听过ReFS硬盘格式吗?
  11. debian的中国镜像
  12. 微型计算机原理与接口周荷琴,微型计算机原理与接口技术周荷琴
  13. 农行2021软件开发笔试题
  14. 【Unity3D】表格
  15. k3s-(3)k3s-agent工作节点安装
  16. Android 拼音搜索中文,包含多音字
  17. 超级玛丽 Super Mario java基础小游戏:基于JAVA面向对象实现的超级马里奥(Super Mario)游戏(简单小游戏,仅仅使用Java面向对象基础实现(附上源码))
  18. 数学建模学习之聚类算法
  19. java的regex_java regex 简单使用
  20. 国家开发银行广东省分行

热门文章

  1. 2021年场(厂)内专用机动车辆安全管理考试及场(厂)内专用机动车辆安全管理考试题
  2. 计算机搜索不到网络打印机怎么处理,局域网内搜索不到打印机怎么办
  3. 小程序源码:修复登录大河盲盒小程序源码,实现运营“玩法自由”,超多功能的盲盒型抽奖挖矿程序源码下载
  4. 我所收藏的重点大学BBS资源 .
  5. ev1百家云视频解密工具、ev1视频提取工具,支持Windows、MacOS、Linux
  6. python 代码库之遍历ttf字库编码和字符(含demo)
  7. 关于AI,值得推荐的五本好书
  8. P1757 通天之分组背包 (分组背包 模板
  9. .net ImageProcessor组件转换图片格式
  10. 2022年宋干节活动-乌隆他尼皇家大学