概述
代码相信同学们都不陌生,但对于代码风格,或许大家并不是很了解,今天就来聊聊开发中比较重要的一个环节,就是代码风格,什么是代码风格呢?
代码风格(英语:Programming style)即程序开发人员所编写源代码的书写风格。良好代码风格的特点是使代码易读。
代码风格真的是太重要了,尤其是在团队协作开发中,一套好的代码风格和规范大家都能适应并看懂、如果没有统一的代码风格,阅读协作起来是相当困难的。你这个风格、我那个风格、那岂要不是乱套了。
刚开始从事开发行业的时候,上级让我改一个小功能,我改好了,然后提交到了SVN
,正好有个同事也改了个东西,与资源库同步的时候显示他冲突了,随即被同事生气的教训了一顿,那会我真是一头雾水,我就改了一个地方,怎么冲突了,原来自己写代码有个习惯那就是格式化一下代码,正式因为和项目整体代码风格不一致,所以造成了冲突,当时同事处理的很痛苦,毕竟几百行呢,试想下1万多行代码遇到这种情况怎样?不瞒大家说,我目前负责维护的一个项目,已经1万6千多行了,不过目前我已经在重构重写了,风格、规范都上纲上线,不用因为风格和规范而烦恼,轻松舒服。
代码规范就不说了,目前我们用的是阿里巴巴代码规范,相信很多同学都知道并用过,不了解有兴趣的同学请点击查看。
良好的风格可节约大量处理问题时间、避免很多问题,其中最重要的一点就是审查,风格一致可排除代码中大量的换行、空格、直接定位新增修改过的地方。
对于代码格式化风格,可以在开发工具进行配置,为啥还要用插件呢?首先团队人员工具不一样,有使用IDEA、有使用eclipse的,萝卜青菜各有所爱,每个人都需要配置一遍,但如果有个插件,通过maven命令便可以无视开发工具格式化统一的风格呢?今天它来了。
官网
https://code.revelc.net/formatter-maven-plugin/
使用
环境要求
Maven 3.3.9+
JDK1.8+
pom配置
...
net.revelc.code.formatter
formatter-maven-plugin
2.11.0
...
运行命令:mvn formatter:format
执行格式化。
注:使用此配置,将使用默认编译器版本(1.8)和当前系统的行结尾来格式化项目
src/main/java
和src/test/java
中的代码源文件。
上面通过命令的方式格式化了源文件,那如何在构建期间格式化源文件呢,很简单将format
goal包含在插件执行就好了,那将在构建compile
目标期间运行插件。
...
net.revelc.code.formatter
formatter-maven-plugin
2.11.0
format
...
为了在构建过程中验证源代码,请在插件执行中包括validate
goal 。
...
net.revelc.code.formatter
formatter-maven-plugin
2.11.0
validate
...
可用目标
-
formatter:format
: 用于使用Eclipse
代码格式化程序格式化Java
源代码。与原始hash
到格式化后的hash
以及缓存的hash
相比,使用内容的sha512 hash
避免了源文件的重新格式化。 -
formatter:help
:在formatter-maven-plugin
上显示帮助信息。 -
formatter:validate
:专注于CI服务器。如果代码未按预期格式格式化,则将使构建失败
进阶
指定目录
默认情况下,该插件会格式化src/main/java
和src/test/java
目录中所有Java
源文件的格式。要想在其他位置格式化源文件,可以使用directories
参数。下面的示例将格式化java主要源目录和生成的源目录中的文件:
net.revelc.code.formatter
formatter-maven-plugin
2.11.0
${project.build.sourceDirectory}
${project.build.directory}/generated-sources
指定包含和忽略
还可以使用includes
和excludes
参数对指定要格式化的Java
源文件进行更多控制。这些参数是相对于所有源目录src/main/java
和src/test/java
。下面的示例仅格式化include
包中的文件,Test.java和exclude
包中的文件除外:
net.revelc.code.formatter
formatter-maven-plugin
2.11.0
cn/smallbun/manage/formatter/
cn/smallbun/manage/special/
**/*Test.java
格式化编码
使用encoding
参数,指定格式化期间要使用的编码,下面示例指定在格式化期间使用UTF-8编码:
net.revelc.code.formatter
formatter-maven-plugin
2.11.0
UTF-8
默认情况下,如果在pom中指定project.build.sourceEncoding
,则插件使用该属性。否则,将使用当前系统的文件编码。
UTF-8
net.revelc.code.formatter
formatter-maven-plugin
2.11.0
自定义配置文件
在开发中公司都有统一的代码配置文件,我们只需要在插件配置即可,插件只支持使用eclipse格式化配置。大家可以将使用configFile
参数为代码格式化程序指定格式化选项。
net.revelc.code.formatter
formatter-maven-plugin
2.11.0
${project.basedir}/Formatter.xml
默认情况下,该插件使用configFile
中的编译器版本而不是编译器参数。要指定使用编译器参数而不是configFile
中的参数,可将overrideConfigCompilerVersion
参数设置为true
。该参数对于避免更新configFile
来使编译器版本与pom
保持同步非常有用。
net.revelc.code.formatter
formatter-maven-plugin
2.11.0
${project.basedir}/Formatter.xml
true
1.9
1.9
1.9
上面示例使用指定的编译器版本进行格式化,除Formatter.xml
配置文件中定义的编译器版本以外的所有设置。
格式化模板
这里提供自己使用的一套格式化模板
问题
@formatter:off 无效
打开样式文件,将use_on_off_tags
设置为true
总结
以上就是使用插件的内容了,可能有不详细的,时间久了插件也会有所更新,大家可以去官网查看文档,程序员学会看文档真的很重要,使用插件有好处也有弊端,大家也可以直接使用工具配置方式,或者使用此插件,看情况吧,看场景了。即使不用了解一下也是好的嘛。