今天发现的一个关于idea的神奇的现象!!!
事情是这样的,从昨天开始我的Idea就像中了毒一样,出现了一个很神奇的现象:代码文件写着写着会变得巨大!12KB写俩小时之后会长大到4M!!
倒不是说我俩小时写了多少代码,主要是代码写着写着就感觉IDE越来越卡,直到最后卡到idea无响应。重启idea后,idea在该代码文件上有这个提示:
大概意思是说该代码文件有4.01MB,超过了资瓷的2.44MB的最大限制,代码提示等功能不可用。但是我这个文件里横竖只写了300来行代码呀!300多行代码怎么想都不可能有4M啊!
为了排除是因为自己写代码写懵逼了 (并不) 于是果断重启机器,发现问题依旧存在。重开idea发现在代码第303行之后被添加了大量空格符
这就有点神奇了!首先这些字符肯定不是我自己加的,难不成是idea出问题了?
后来百度了一下,都没有找到相关的问题以及解决方案。
但是我有注意到第303行Map后面的有一个“<”符号的颜色貌似和其他注释不同,难不成是这个“<”引起的问题?
在SVN上回滚到前一个没问题的版本,发现这里的注释原来是这样写的
注意这里:
@return: java.util.Map<java.lang.String , java.lang.String>
这一行的一对 “<>”符号与中间的逗号显示的颜色不同,既然颜色不同,那么就说明肯定Idea把它们识别成了别的东西,起码和旁边的注释肯定不同了!
于是尝试着格式化代码看看,果然多格式化几次代码之后,idea就在这里面加入了不少空格,这里的代码也变成了这样了......
好了到目前为止问题总算是发现了,那么又是什么原因才导致的这个问题呢?
众所周知javadoc注释是会有用到HTML标签的,而“<>”符号正好表示这是一个标签,又因为在一个“<>”内只会有一个单词【如果把“.”和“_”连起来的也都认为是一个词的话】,而逗号或者空格在HTML中刚好是用来区分不同属性的,所以这里写成 <String,String> 这样那就会有问题,中间出现的逗号显然会破坏完整性,形成了“强行往标签内塞入了两个词”,而idea读到“<>”中的逗号或者空格时,可能就会以为这里应该format一下,比如填充进几个空格啥的。。
So...,就这样咯。下面做了个小实验,也是证明了我的观点。
既然找到了问题原因那我们又要怎么解决呢?
这里给出一些思路吧:
1、使用引号把具有“<>”这种可能会与HTML冲突的特殊符号的数据类型【List<E>、Map<k,v> 等等......】括起来;
2、使用 HTML内的转义符:lt和gt(防止被转义,所以&我没有打出来)符号替换掉< 和 >符号;
3、将返回值的变量名写在哪儿就行啦。只要做到变量起名:见其名,知其意 ,相信看懂注释也不难咯。
OK!问题解决!~~
PS:
下午又拿eclipse测试了一下,发现竟然没有这个问题???!!!居然没有!!!
看来是石锤了,这是分明就是一个idea独家的格式化代码方面的小bug!!。。。
idea程序员出来挨打!(滑稽)