eclipse idea统一使用Google Java code style

go (132) 2023-03-24 22:20

大家好,我是编程小6,很高兴遇见你,有问题可以及时留言哦。

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情

默认code style比较

新建一个java文件,内容一致,然后分别使用idea与eclipse的默认code style进行格式化,格式化之后进行比较差异。

文件内容:

/** * Description:线程Demo * * @Author: ShiPengYu * @Date: 2022/10/13 */
public class MyThread extends Thread {
    public MyThread(String name) {
        super(name);
    }

    @Override
    public void run() {
        super.run();
        System.out.println(Thread.currentThread().getName() + ":Hello!");
    }
}

在eclipse中新建一个demo项目,新建一个MyThread.java文件,将文件内容粘贴进去,然后格式化代码(快捷键ctrl+shift+F):

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第1张

然后再在idea中新建一个相同内容的文件并格式化(快捷键ctrl+alt+L):

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第2张

然后再在idea中点击选中文件鼠标右击选择Compare with选项,然后在磁盘中找到eclipse中创建的文件所在位置,进行两个文件的比较。

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第3张

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第4张

比较结果显示(按照下图中将第三个选项调整一下,这样空格差异就能高亮,否则不方便观察):

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第5张

这个现象在协同开发使用不同开发工具时,提交代码,查看代码差异的时候经常遇到,有时候明明只改了一两个地方,但是比较下来整个文件几十处差异,非常的难受!

统一code style

使用统一的代码风格标准是解决这种差异的一种好的办法,idea与eclipse都支持自定义代码风格,所以下面使用Google的code style模板来探究解决这种差异。

Google code style 的github下载地址:

idea使用Google code style

首先去GitHub上将文件适用于idea的code style模板文件下载到本地磁盘(也可以将整个仓库拉取下来)。

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第6张

然后在idea中导入模板文件:

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第7张

选择刚才下载的模板文件进行导入

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第8张

后面的弹窗点击ok即可。

后面想要换回来可以点击这里进行切换。

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第9张

eclipse使用Google code style

在GitHub仓库中下载适用于eclipse code style的模板文件:

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第10张

导入,然后应用并关闭。

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第11张

都使用Google code style后的比较

按照上述步骤都设置好Google code style之后再次进行代码格式化,然后再次比较:

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第12张

发现那种因为空格或者制表符的差异已经消失,但是!

  • 在eclipse中文件末尾多了一个空行
  • 在idea中类声明下面多了一个空行

起初我还以为我操作过程中不小心点击到了换行什么的,再次确认内容之后格式化,仍然是一样的效果。

至于为啥会有这种差异,暂时没有搞清楚,模板文件也看不懂。但是在issues中看到了下面这个:

eclipse idea统一使用Google Java code style_https://bianchenghao6.com/blog_go_第13张

大致意思就是这两个模板文件更新在4年前,实际上已经过时了。谷歌已经将其转移到了Google Java Style Guide。

那上面我去瞅了下,好像就是在描述Java的code style因该咋咋咋的,并没有发现能直接拿来使用的模板文件。

其它的解决办法

虽然将空格以及制表符这种数量最多的差异屏蔽了,多出几行空行感觉已经友好许多了,但是能全部统一是最好的。

阿里的Alibaba Java Coding Guidelines idea插件也是挺久没有维护了,在新版本的idea中会还报错。阿里在GitHub中关于p3c规范仓库中的模板文件是基于eclipse的,并不适用于idea,至于网上说的另外一种安装一个在idea中支持eclipse格式化的插件,然后再使用p3c规范的方式,我觉得不够好(自己也尝试过,没啥效果,就连空格制表符的问题都没能解决,原因也没去细究)。再加上看到不论是阿里的p3c还是谷歌的styleguide仓库都已经许久没有更新了,虽然代码格式规范或许十年不变也有可能,但是idea、eclipse在不断的更新,这些模板文件现在还适用不适用还是不确定的。

看到idea可以将其导出为eclipse的模板文件,所以或许可以基于阿里的p3c也好,谷歌的也好,或者基于某个标准定义一个自己的code style,然后将其导出为eclipse或者idea的模板文件,然后由公司自己进行维护,我觉得也是比较可行的。

发表回复