看我的文章能减少bug哦, 请微信搜索公众号 tastejava 学习加思考,品味java之美. 一起把代码安排的明明白白~
什么是工具类
大家项目中不管是自己练习的demo还是企业里正式的项目都肯定有各种各样的工具类, 有祖传的也有新写的. 要说什么是工具类, 大家都能张口就来, 封装了公共逻辑的, 不能实例化的, 不依赖具体业务数据的就是工具类.
实际企业项目中的问题
但是在项目中我发现大家写的工具类往往不符合Sonar静态代码规范, 甚至在工具类依赖框架bean的时候将工具类实例化当作普通类来使用.
理想的工具类
我认为理想中的工具类应该具有如下特性:
- 符合工具类定义, 抽象通用逻辑, 不依赖具体业务数据
- 提供静态方法给调用方, 工具类不可随意实例化
- 工具类编码风格符合Sonar静态代码要求
如何得到理想的工具类
当工具类只是简单的功能处理时, 我们很简单的就能定义出符合上述要求的工具类, 比如借助门面日志定义一个logger风格格式化字符串的工具类:
/**
* 通过门面日志将字符串中的占位符替换为参数并返回格式化后的字符串
*
* @author GZL
* @date 21.4.14 12:53
*/
@UtilityClass
public class StringUtil {
/**
* 门面日志提供的字符串格式化能力
* @param messagePattern 要格式化的字符串
* @param args 参数
* @return 格式化后的字符串
*/
public static String formatString(String messagePattern, Object... args) {
return messagePattern == null ? "" : MessageFormatter.arrayFormat(messagePattern, args