如何快速便捷为方法添加注释?

背景

开发过程中,需要对类和方法添加注释,类的注释比较好实现,通过设置模板,在创建时即可自动创建预设的注释。而为方法添加注释,则就没那么容易,最主要的影响在于参数的处理上。

对于IDEA,在接口的方法上方输入/**+回车后,会自动创建格式化注释

    /**
     * 
     * @param id
     * @return
     */
    Share get(String id);

当对于其他方法,按照上面操作,则只会创建一个简单的多行注释,无参数信息        

    /**
     *
     */
    public Share get(String id) {
        Share share=new Share();
        share.setId(id);
        share.setUserId("1");
        share.setTitle("我的分享");
        //使用Feign调用远程服务
        // UserDto userDto = userService.getUser("1");
        UserDto userDtoParam=new UserDto();
        userDtoParam.setId("2");
        UserDto userDto = userService.query(userDtoParam);

        String userName=userDto.getName();
        share.setUserName(userName);
        return share;
    }

那么,如何为任意方法生成模板化的注释,以提升开发效率呢?

方案1:live template功能

实现

对于IDEA,首先想到的是live template功能,可以自定义代码片段,通过自定义缩略语,快速完成,之前自己也配置过,参照以往经验,进行如下配置:

模板定义

/**
 * 
$params$
 * @return    
 */

变量定义

如何快速便捷为方法添加注释?_第1张图片

使用内置方法methodParameters来获取参数。

问题

实际运行结果是……

  /**
     * 
    
     * @return    
     */
    public void get(String id,String name) {
     
        
    }

发生了什么呢?实际并没有取到方法参数,通过搜索,发现很多人说,只有放到方法内部,才能获取到方法参数,再手工剪贴到方法体外……试了下,确实是这样,但是,这不是折腾吗?不提降低效率这事,就这么个操作法,这得多别扭。

尝试

于是,进一步找寻解决方案,发现有个关键问题,是模板中的/,会导致methodParameters方法失效,要求模板不能有/,然后出现了一种解决办法,即将/*从模板中拿走,由外部输入,即

*
 * 
$params$
 * @return    
 */

这时候,要求输入/*+自定义的缩略词+tab,这时候,参数能读取了,但是多个参数显示成一个数组,这样子……怎么来指定每个参数的含义?

   /**
     * 
    [id, name]
     * @return    
     */
   Share get(String id,String name);

此外,网上也有不少人,说缩略词必须设置为*,并且说这样很巧妙,不过我实在看不出巧妙在哪,也试验过,缩略词任意,比如d,只要保证外部输如/*就行了,这种方式,依旧相当别扭。

解决方案

继续探索方案,发现使用groovy脚本来解析参数数组,具体如下:

模板定义

**
 * 
$params$
 * @return    
 */

 变量定义

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

这是自己进行反复调试后可实现最终期望结果的脚本,网上有很多,存在各种瑕疵,比如,对于无参数的方法,同样会生成一行 @param ,此外常见的还有生成空白行、错位等。

 使用时,只需输入/+ 缩略词+tab即可

    /**
     *
     * @param id
     * @param name
     * @return    
     */
   Share get(String id,String name);

方案2:Easy Javadoc插件

从上面可以看出,自己配置这个模板还是比较费劲,还有另外一种思路,使用idea插件,名字为Easy Javadoc,安装后,选中方法名,按快捷键ctrl+\,可以直接生成方法注释,同时,进行翻译,效果如下。

    /**
     * 得到
     *
     * @param id   身份证件
     * @param name 名称
     * @return {@link Share}
     */
    Share get(String id,String name);

这个插件有几个地方需要注意:

1.默认的热键ctrl+\与idea内置的一个操作冲突,需要修改下快捷键设置

2.默认的翻译引擎是谷歌,可能因为被墙,并不能正常进行,可在设置里更换为百度翻译或有道翻译

该插件的详细介绍可参见我的另一篇专门介绍的文章:https://blog.csdn.net/seawaving/article/details/122335967

你可能感兴趣的:(实战,注释,easy,javadoc,live,template,idea,实用技巧)