由于想规范下一下项目的注释, 所以首先得规范一下IDEA的注释模板, 创建类跟在方法上的注释模板怎么设置我就不说了, 网上太多的教程了, 我在这里要说的是稍微高级一点的 如何个性化 自定义
我的方法注释模板如下
$params$ 参数的定义在右边的编辑变量里
params 里面的代码是从一些你抄我, 我抄你的播客中复制过来的如下
groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();
for(i = 0; i < params.size(); i++) {
result+='* @param ' + ((i < params.size() - 1) ? '\\n\\b' : '')
};
return result", methodParameters())
由于我的页面好多地方都有这三个参数
public String init(Model model, Pager pager, MusicGroup record)
并且这三个参数的作用跟中文描述也是固定的, 如果按照以上写法每次创建完就是下面这个样子
由于不想每次都手动将参数的中文描述写成下面这样
于是我将代码改照成了以下样子
groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();
for(i = 0; i < params.size(); i++) {
result+= params[i].equals('model') ? ' 存放数据的容器' : '';
result+= params[i].equals('pager') ? ' 分页对象模型' : '';
result+= params[i].equals('record') ? ' 查询条件参数' : '';
result+='* @param ' + ((i < params.size() - 1) ? '\\n\\b' : '')
};
return result", methodParameters())
真如我预期想法, 在方法注释上输入 /** 按回国后出现了我想要的结果
到这里本以为事情搞定了, 可这里确埋下了一个很大的坑, 你仔细看这几个 @param 有两个是没有下滑线的 没有下滑线 个人认为java 把@param他是当做一个字符串, 并不是把@param当成一个注解, 为了验证于是我将代码生成了 javadoc文档, 果不其然, 他的确将没有下滑线的 @param注释 当成了一个字符串去处理 生成的doc文档如下
也许这个时候你会问 这有什么关系, 我看的是代码又不生成 javadoc文档, 如果这样想你就大错特错了
因为你无法保证你的项目经理在哪天会说这个项目要生成 javadoc, 也无法保证项目在交付的时候客户要求说需要文档,
如果到项目交付时再一个个去改, 项目大的话估计要好几天先不说, 而且还因为这个问题引响到项目交付日期, 带来客户和老板的抱怨, 所以一开始发现这个问题就要去解决它
至于解决的过程经过八八六十四 还是九九八十一难才定位到问题的根源这里就不说了, 直接将结果抛出来吧
因为我在解决问题的时候发现 如果你在 @param 后敲个回车再手动写个@param的时候这时写的这个@param是有下滑线的,
因此我得出一个结论就是 代码在拼接 * @param 的时候少写了个 \n 回车健, 正所谓你有政策我有对策, 程序员不怕问题, 就怕找不到问题, 竟然找到了问题所在, 于是我将代码改成如下
groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();
for(i = 0; i < params.size(); i++) {
result+=((i > 0) ? '\\n* ' : '* ');
result+='@param ' + params[i];
result+= params[i].equals('model') ? ' 存放数据的容器' : '';
result+= params[i].equals('pager') ? ' 分页对象模型' : '';
result+= params[i].equals('record') ? ' 查询条件参数' : '';
};
return result", methodParameters())
接着重新按下 /** + 回车 出现了我预期的效果 如下,
看清楚每个@param都是有下滑线 并且后面的参数按住 control 鼠标点击是会定位的 至于上面的面代为什么不用 if else 写 而用三目运算 我告诉你 这不是java代码 用if是会报错的
重新生成javadoc 参数显示也正常了 如下
这样你就不怕哪里客户或老板跟你要项目的 doc文档了