当前位置: 首页 > news >正文

IDEA使用LiveTemplate快速生成方法注释

  本文目标:开发人员,在了解利用Live Template动态获取方法输入输出参数、创建日期时间方法的条件下,进行自动生成方法注释,达到自动添加方法注释的程度;

文章目录

    • 1 场景
    • 2 要点
      • 2.1 新增LiveTemplate模版
      • 2.2 模版内容填写
    • 3 练习手段

1 场景

  方法的注释,一般包含作者、创建时间、功能描述、输入参数、返回值,如果每个方法的注释都手写,非常耗时,且容易随着后期变更代码导致差异,不好维护。

public class Pencil {/*** @Author 张三 010223* @date 2024-08-08 14:08:09* @description 计算两数的和* @param a* @param b* @return java.lang.String*/public String addTowNumber(int a, int b) {return String.valueOf(a+b);}
}

  IDEA使用LiveTemplate快速生成方法注释,可以自动生成方法注释中的“作者、创建时间、输入参数、返回值”,仅需要手写“功能描述”,减少因写注释带来的工作量。

  这里的addTowNumber方法的注释,内容为输入“/**”,加“回车”后自动生成,只有功能描述的“计算两数的和”为手动添加。

2 要点

2.1 新增LiveTemplate模版

  按顺序点击菜单 File->Settings->Editor->Live Templates,来到LiveTemplate的配置页面。

  点击右侧“+”按钮,先选择“2.Template Group”新增一个组别,再在该组别下,选择“1.Live Template”新增一个模板。

LiveTemplate菜单
  这里新增了“UserTemplate”组,以及内部新增了“*”模版。

新增模版
  内容填写下文会继续介绍。

2.2 模版内容填写

  (1)Abbreviation: *

  “*”表示匹配字符,在使用时,一般先输入“/**”,其中第二个“*”就会被替换成“Template text”中的内容。

  (2)Description: 方法注释

  模版的描述信息,不写也没事。

  (3)Template text:

  模版内容,即匹配字符会被替换成的目标内容,其中$date$、$time$、$param$、$return$表示变量,需要继续配置来源填充。

** @Author 姓名 工号* @date $date$ $time$* @description 功能描述$param$* @return $return$*/

  注意,此处的开头不能偷懒写成“/**”,这会导致$date$、$time$、$param$、$return$被块注释包裹,无法实现变量赋值。

  (4)define: java

  必须配置,否则无法匹配对应语言的文件类型,无法生效。

  (5)Expand with: Enter

  匹配字符后面的快捷键生效方式,Enter表示回车,即前面输入“/**”后,接着“回车”即可实现替换。

  (6)EDIT VARIABLES:

编辑变量取值
  编辑$date$、$time$、$param$、$return$变量的取值来源。

    1)date: date(“yyyy-MM-dd”)

    2)time: time(“HH:MM:ss”)

    3)param:

groovyScript("def result = '';def params = \"${_1}\".replaceAll('[\\\\[|\\\\]\\\\s]', '').split(',').toList();for (i=0; i<params.size(); i++) {if (params[i] != '') {result += '	 * @param ' + params[i] + ((i < params.size()-1) ? '\\r\\n' : '')}};return result == '' ? null : result;", methodParameters())

    4)return:

groovyScript("def result = '';def param = \"${_1}\".replaceAll('[\\\\[|\\\\]\\\\s]', '');result = param;return result == '' ? null : result;", methodReturnType())

    输入参数param、输出参数return使用了groovyScript脚本,代码都在一行比较难读,展开如下:

//param输入参数
groovyScript("def result = ''; //定义返回变量def params = \"${_1}\".replaceAll('[\\\\[|\\\\]\\\\s]', '').split(',').toList(); //获取mothodParamters()函数的第一个返回值,并去除[、]、空格字符//遍历params,将每一个参数转换成字符串,赋予resultfor (i=0; i<params.size(); i++) {if (params[i] != '') {result += '	 * @param ' + params[i] + ((i < params.size()-1) ? '\\r\\n' : '')}};//返回resultreturn result == '' ? null : result;", methodParameters())//return输出参数
groovyScript("def result = ''; //定义返回变量def param = \"${_1}\".replaceAll('[\\\\[|\\\\]\\\\s]', ''); //获取methodReturnType()函数的第一个返回值,并去除[、]、空格字符result = param; //设置返回值return result == '' ? null : result; //返回result", methodReturnType())

3 练习手段

  可以参考“2 要点”章节,在自己的项目中尝试用LiveTemplate配置方法注解,提升效率。

相关文章:

IDEA使用LiveTemplate快速生成方法注释

本文目标&#xff1a;开发人员&#xff0c;在了解利用Live Template动态获取方法输入输出参数、创建日期时间方法的条件下&#xff0c;进行自动生成方法注释&#xff0c;达到自动添加方法注释的程度&#xff1b; 文章目录 1 场景2 要点2.1 新增LiveTemplate模版2.2 模版内容填写…...

慢SQL优化

1、避免使用select * select * 不会走覆盖索引&#xff0c;会出现大量的回表操作&#xff0c;从而导致查询sql的性能很低。 --反例 select * from user where id 1;--正例 select name,age from user where id 1;2、union all 代替 union union&#xff1a;去重后的数据…...

MES生产执行系统源码,支持 SaaS 多租户,技术架构:springboot + vue-element-plus-admin

MES的定义与功能 MES是制造业中一种重要的管理信息系统&#xff0c;用于协调和监控整个生产过程。它通过收集、分析和处理各种生产数据&#xff0c;实现对生产流程的实时跟踪和监控&#xff0c;并为决策者提供准确的数据支持。MES涵盖了工厂运营、计划排程、质量管理、设备维护…...

【Linux】分析hung_panic生成的vmcore

简介 1、遇到一个问题&#xff1a; 上述日志是oom_kill&#xff0c;下述日志是hung_panic 2、分别解释两层含义&#xff0c;全部日志如下&#xff1a; [75834.243209] kodo invoked oom-killer: gfp_mask0x600040(GFP_NOFS), order0, oom_score_adj968 [75834.245657] CPU: 0…...

unity 画线写字

效果 1.界面设置 2.涉及两个脚本UIDraw.cs和UIDrawLine.cs UIDraw.cs using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public class UIDraw : MonoBehaviour, IPointerEnterHandler, IPointerEx…...

GitHub的详细介绍

GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;它建立在Git这个分布式版本控制系统之上&#xff0c;为开发者提供了在云端存储、管理和共享代码的便捷方式。以下是对GitHub的详细介绍&#xff1a; ### 一、GitHub的基本功能 1. **代码托管**&#xff1a;GitHub允…...

【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面之Tabs(三)

学完时间&#xff1a;2024年8月14日 一、前言叨叨 学习HarmonyOS的第六课&#xff0c;人数又成功的降了500名左右&#xff0c;到了3575人了。 本文接上一文章【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面&#xff08;一&#xff09;&#xff0c;继续记录构建更…...

Detectron2 安装指南

文章目录 前言Detectron2官方文档官方指南 安装 Detectron2虚拟环境安装 PyTorch安装 Detectron2 总结 前言 Detectron2 是 Meta AI 的一个机器视觉相关的库&#xff0c;建立在 Detectron 和 maskrcnn-benchmark 基础之上&#xff0c;可以进行目标检测、语义分割、全景分割&am…...

亚马逊 Linux mysql5.7 安装纪录

wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz cp /home/admin/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz /usr/local/mysql #解压压缩包 tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 重命名mysql-…...

ZLMediaKit编译webrtc

ZLMediaKit官方文档写的挺详细的&#xff0c;但是也不算特别详细。 按照上面的文档&#xff0c;执行到cmake的时候&#xff0c;会提示“srtp 未找到, WebRTC 相关功能打开失败”&#xff0c;但是cmke还是可以继续啊。此时看文档说webrtc比较复杂&#xff0c;默认是不编译的&am…...

KEEPALIVED高可用集群最详解

目录 一、高可用集群 1.1 集群的类型 1.2 实现高可用 1.3 VRRP&#xff1a;Virtual Router Redundancy Protocol 1.3.1 VRRP相关术语 1.5.2 VRRP 相关技术 二、部署KEEPALIVED 2.1 keepalived 简介 2.2 Keepalived 架构 2.3 Keepalived 环境准备 2.3.1 实验环境 2…...

【大模型】llama-factory基础学习

前言&#xff1a;LLaMA-Factory项目的目标是整合主流的各种高效训练微调技术&#xff0c;适配市场主流开源模型&#xff0c;形成一个功能丰富&#xff0c;适配性好的训练框架。 目录 1. 前期准备2. 原始模型直接推理3. 自定义数据集4. 模型训练5. 模型合并并导出 1. 前期准备 …...

【Java】如何使用jdbc连接并操作MySQL,一文读懂不迷路,小白也能轻松学会

JDBC的原理 JDBC&#xff08;Java Database Connectivity&#xff09;是Java提供的用于连接和操作数据库的API。它允许Java应用程序与各种数据库进行交互&#xff0c;以下是JDBC的基本原理&#xff1a; 驱动程序管理&#xff1a;JDBC使用不同的数据库驱动程序来连接不同类型的…...

新手学习VR全景需要知道的几个问题

1.什么是720云 720云是一家专注于VR全景内容制作与展示的技术平台&#xff0c;提供从拍摄、编辑到发布的一站式解决方案。它的核心功能包括全景图像的制作和编辑工具&#xff0c;以及VR全景内容的在线展示和分享服务。720云的技术广泛应用于房地产、旅游、教育、文化展示等多个…...

上海知名泌尿外科专家常态化坐诊黄山新晨医院,让前列腺癌看得更早、更准!

继7月28日上海第四人民医院泌尿外科专家在黄山新晨医院开展义诊之后&#xff0c;8月9日和10日&#xff0c;该团队领头人周铁教授又完成了合作以来的首次坐诊&#xff0c;标志着双方合作从此进入常态化阶段。 周铁主任在查看患者的检查报告 周铁主任曾任中华医学会泌尿外科分会…...

Elasticsearch: 非结构化的数据搜索

r很多大数据组件在快速原型时期都是Java实现&#xff0c;后来因为GC不可控、内存或者向量化等等各种各样的问题换到了C&#xff0c;比如zookeeper->nuraft(https://www.yuque.com/treblez/qksu6c/hu1fuu71hgwanq8o?singleDoc# 《olap/clickhouse keeper 一致性协调服务》)&…...

44 个 React 前端面试问题

1.你知道哪些React hooks&#xff1f; useState&#xff1a;用于管理功能组件中的状态。useEffect&#xff1a;用于在功能组件中执行副作用&#xff0c;例如获取数据或订阅事件。useContext&#xff1a;用于访问功能组件内的 React 上下文的值。useRef&#xff1a;用于创建对跨…...

LLMs之Framework:Hugging Face Accelerate后端框架之FSDP和DeepSpeed的对比与分析

LLMs之Framework&#xff1a;Hugging Face Accelerate后端框架之FSDP和DeepSpeed的对比与分析 导读&#xff1a;该文章阐述了FSDP和DeepSpeed在实现上的差异&#xff0c;Accelerate如何统一它们的行为&#xff0c;并提供指导帮助用户在两种后端之间切换。同时也讨论了低精度优化…...

HarmonyOS应用开发学习-ArkTs声明式UI描述

ArkTs声明式UI描述 1 创建组件 声明式UI描述 ArKTS以声明方式组合和扩展组件来描述应用程序的UI&#xff0c;同时还提供了基本的属性、事件和子组件配置方法&#xff0c;帮助开发者实现应用交互逻辑 创建组件 根据组件构造方法的不同&#xff0c;创建组件包含有参数和无参…...

Redis20-通信协议

目录 RESP协议 概述 数据类型 模拟Redis客户端 RESP协议 概述 Redis是一个CS架构的软件&#xff0c;通信一般分两步&#xff08;不包括pipeline和PubSub&#xff09;&#xff1a; 客户端&#xff08;client&#xff09;向服务端&#xff08;server&#xff09;发送一条命…...

单片机Shell开发避坑指南:从Putty特殊字符处理到内存安全的7个实战经验

单片机Shell开发避坑指南&#xff1a;从Putty特殊字符处理到内存安全的7个实战经验 当你在深夜调试单片机Shell时&#xff0c;突然发现退格键会导致整个系统崩溃&#xff0c;或者用户输入超长字符串后设备莫名其妙重启——这些看似简单的交互问题&#xff0c;往往成为项目交付前…...

接地系统安装怎么做才靠谱?从施工流程、质量验收到常见误区

在建筑电气、工业厂房、机电安装、弱电机房、消防系统和防雷系统中&#xff0c;接地系统安装都是绕不开的基础工作。它不像配电柜、桥架、灯具那样“看得见、拍得出”&#xff0c;但它一旦做不好&#xff0c;轻则设备故障、信号干扰、漏电保护误动作&#xff0c;重则引发触电风…...

AdGuard浏览器扩展:企业级隐私保护与广告拦截解决方案

AdGuard浏览器扩展&#xff1a;企业级隐私保护与广告拦截解决方案 【免费下载链接】AdguardBrowserExtension AdGuard browser extension 项目地址: https://gitcode.com/gh_mirrors/ad/AdguardBrowserExtension AdGuard浏览器扩展是一款专注于隐私保护和广告拦截的开源…...

XUnity.AutoTranslator:Unity游戏自动翻译解决方案

XUnity.AutoTranslator&#xff1a;Unity游戏自动翻译解决方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator是一款专业的Unity游戏自动翻译插件&#xff0c;能够实时将游戏文本转…...

专科ENSP毕设实战:基于eNSP的校园网高可用架构设计与配置避坑指南

最近在帮几个专科的学弟学妹看他们的eNSP毕业设计&#xff0c;发现大家普遍卡在几个地方&#xff1a;拓扑画得挺漂亮&#xff0c;但一配置就各种不通&#xff1b;协议背得滚瓜烂熟&#xff0c;但实际命令敲下去就报错&#xff1b;最后答辩演示时&#xff0c;一拔线整个网络就瘫…...

乳腺癌治疗新思路:除了ER/PR/HER2,你的单细胞数据里还藏着哪些靶点?(附PLK1抑制剂案例)

乳腺癌精准治疗新靶点&#xff1a;单细胞数据驱动的PLK1抑制剂开发路径 当临床医生面对三阴性乳腺癌患者时&#xff0c;传统分子分型往往无法提供足够的治疗指引。最新单细胞测序技术揭示&#xff0c;在ER/PR/HER2这些经典标志物之外&#xff0c;肿瘤微环境中还隐藏着更具临床价…...

MAXON阀150SMA12-FA22-CC2380

MAXON 150SMA12-FA22-CC2380 是一款工业燃烧控制领域的高品质燃气电磁阀。以下是对该型号的详细解析与关键参数&#xff1a; 1. 型号拆解 该型号遵循 MAXON&#xff08;麦克森&#xff0c;现属 Honeywell 过程解决方案&#xff09;的命名规则&#xff1a; 150&#xff1a;阀体…...

AI Agent 时代的“将领艺术“:一个人如何指挥一支开发军队

摘要&#xff1a;本文探讨在 AI Agent 时代&#xff0c;开发者如何从"单兵作战"转变为"一人成军"&#xff0c;核心在于任务拆分能力、Agent 调度能力和系统集成能力。通过战争将领的类比&#xff0c;提供一套可复用的 Agent 项目管理框架。 关键词&#x…...

次元画室LSTM在序列生成中的潜在应用:构思动画分镜

次元画室LSTM在序列生成中的潜在应用&#xff1a;构思动画分镜 你有没有想过&#xff0c;让AI帮你画漫画或者构思动画分镜&#xff1f;比如&#xff0c;你画了一个角色起跑的姿势&#xff0c;AI就能自动帮你画出他奔跑、跳跃、落地的后续动作序列。这听起来像是未来科技&#…...

ChatGPT归档数据恢复机制深度解析:原理与实战指南

ChatGPT归档数据恢复机制深度解析&#xff1a;原理与实战指南 在AI应用开发中&#xff0c;数据管理是一个绕不开的话题。随着项目迭代和用户量增长&#xff0c;对话记录、训练数据、配置信息等会迅速累积。为了平衡存储成本与数据可用性&#xff0c;归档&#xff08;Archive&a…...