前言
在平时的程序开发中Code Review(代码审查)是必不可少的步骤,旨在提高代码的可读性和可维护性,减少后期的维护成本,让你的代码看起来更舒服。这个可以通过阅读开发文档和安装必要的插件实现。重视Code Review,既是对自己负责也是对他人负责。
重要提示
- 代码编辑器 eclipse
- 相关的链接和资源已经放在文章的末尾,有需要的童鞋可以自行查看和下载。
开发规范文档
这里我要推荐《阿里巴巴Java开发手册》,截止到目前已经发布了1.4.0(详尽版)。《阿里巴巴Java开发手册》是阿里内部Java工程师所遵循的开发规范,涵盖编程规约、单元测试规约、异常日志规约、MySQL规约、工程规约、安全规约等,这是近万名阿里Java技术精英的经验总结,并经历了多次大规模一线实战检验及完善。这是阿里回馈给Java社区的一份礼物,希望能够帮助企业开发团队在Java开发上更高效、容错、有协作性,提高代码质量,降低项目维护成本。
个人建议最好是平时抽空阅读简单留个印象,当项目用到的时候再次回顾,写出符合规范的代码,少走一些坑。当然对手册上不是很明白的可以直接谷歌或者提出来跟大家讨论,这样可以提升自己的认识。
备注,开发手册已经放在末尾的资源链接
代码规范插件
p3c的安装和卸载
代码规范检查插件p3c,是根据《阿里巴巴Java开发手册》转化而成的自动化插件。通过扫描文件或者应用,再用简洁的面板按照等级给出一些合理的建议。这些详细的建议点击进去可以直接跳转到对应的文件,十分的方便。
插件安装
方式一 离线安装(推荐)
这种方式使用eclipse导入插件的压缩包即可,简单的说就是先手动下载再安装,跟在线安装大同小异,效率比在线安装高一些。
1、下载压缩包
访问p3c插件地址,下载zip包
2、点击Help,选择lnstall New Software
3、选择压缩包
在对话框中点击Add,输入插件的名字和选择压缩包,再点击下方的Add
4、对插件打钩,点击Next
5、继续点击next
6、接受协议,再点击Finish
7、安装后重启
当你在菜单栏看到相关图标或者右键看到‘阿里编码规约扫描’时表示安装成功。
特别提醒
有些博客介绍离线安装的时候,将插件解压出来的features和plugins这两个文件夹复制到eclipse的目录下。这样虽然也可以安装成功,但是在插件管理界面是看不到相关信息的,不便于以后的升级和卸载,所以不推荐使用这种方式。
方式二 在线安装
1、点击Help,选择lnstall New Software
2、输入插件地址
在对话框中点击Add,输入插件的名字和下载地址 https://p3c.alibaba.com/plugin/eclipse/update/,再点击下方的Add
3、对插件打钩,点击Next
4、继续点击next
5、接受协议,再点击Finish
6、安装后重启
当你在菜单栏看到相关图标或者右键看到‘阿里编码规约扫描’时表示安装成功。
插件卸载
1、点击Help,选择lnstall New Software
2、点击already installed
3、选中插件,点击Unistall
4、在对话框中点击Finish
5、卸载之后重启
插件的使用
1、选中你要扫描的的文件或者应用,右键选择‘阿里编码规约扫描’功能,或者点击菜单栏的扫描按钮
2、在控制台的‘P3C Results’和‘Rule Detail’即可看到扫描结果建议和示例
其中P3C Results中是按等级显示的,红色的代表严重,赶紧修改;黄色的代表警告,应该修改;蓝色的代表建议,最好修改。可以直接连接到指定的文件从而修改,方便极了。
3、根据提示进行修改,右侧有quick fix按钮,不过目前很多时候还是手动修改。还有目前不支持代码实时检测,需要手动触发,所以改完之后再重新扫描就好了。
4、如果你已经修改完毕或者不想修改了,可以点击‘P3C Results’窗口中右侧的‘x’关掉扫描功能,当然使用‘close project’再重新打开应用也是可以的。
5、点击菜单栏的蓝色按钮还可以进行语言的切换
至此,安装、卸载和使用的教程已经完成了。
注释和格式化模板
官方还额外提供了eclipse代码格式化和注释的模板,通过导入模板和开启自动保存功能,可以帮我们美化代码,让代码看起来更加的舒服。
1、下载相关模板
- ali_eclipse_codeStyle_codeTemplate.xml 阿里的注释模板
- ali_eclipse_codeStyle_formatter.xml 阿里的格式化模板
2、导入格式化模板
3、导入注释模板
4、设置保存自动格式化
当保存的时候可以按照你之前设置的模板进行格式化代码,免去了很多重复劳动。
5、设置author信息
默认情况下注释中的author一般是administrator,很明显不是我们想要的。可以通过设置eclipse安装目录下的.ini文件,如果是eclipse对应是eclipse.ini,如果是sts-eclipse对应的是STS.ini文件的-vmargs 后面增加参-Duser.name=yourusername即可。这种方式是全局设置。
6、效果演示
保存自动格式化,简约清晰,突出重点。
/**
* 生成token
*
* @author huangjg
* @date 2020/06/25
*/
public class JwtUtil {
/**
*
* 生成token
*
* @param subJect
* @return
*/
public static String createToken(String subJect) {
Algorithm algorithm = Algorithm.HMAC256(JwtConstant.SECRET);
// 头部信息
Map<String, Object> map = new HashMap<String, Object>();
map.put("alg", JwtConstant.ALG);
map.put("typ", JwtConstant.TYPE);
// 设置有效时间
LocalDateTime now = LocalDateTime.now();
Date nowDate = localDateTime2Date(now);
LocalDateTime expireTime = now.plusMinutes(JwtConstant.EXPIRATION);
Date expireDate = localDateTime2Date(expireTime);
// 生成token
String token = JWT.create().withHeader(map)// 设置头部信息 Header
.withIssuer(JwtConstant.ISSUER)// 设置 载荷 签名是有谁生成 例如 服务器
.withSubject(subJect)// 设置 载荷 签名的主题
// .withNotBefore(new Date())//设置 载荷 定义在什么时间之前,该jwt都是不可用的.
.withAudience(JwtConstant.AUDIENCE)// 设置 载荷 签名的观众 也可以理解谁接受签名的
.withIssuedAt(nowDate) // 设置 载荷 生成签名的时间
.withExpiresAt(expireDate)// 设置 载荷 签名过期的时间
.sign(algorithm);// 签名 Signature
return token;
}
/**
* 校验token
*
* @param token
* @return
*/
public static String verifyToken(String token) {
Algorithm algorithm = Algorithm.HMAC256(JwtConstant.SECRET);
JWTVerifier verifier = JWT.require(algorithm).build(); // 获取实例
DecodedJWT jwt = verifier.verify(token);
String subject = jwt.getSubject();
return subject;
}
public static Date localDateTime2Date(LocalDateTime localDateTime) {
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(zoneId);
Date date = Date.from(zdt.toInstant());
return date;
}
}
结语
通过熟读开发文档和规范化插件的使用,让我们写出更加优雅的代码,离大神的背影又近了一步。