工具类是过程中最常用的类,除功能性外它主要实现代码复用,这一方面极大降低使用门槛,另一方面通过收敛提高规范性和通用性,进而提高可扩展性和可维护性,从而大幅提升开发效率。

以往当我们需要一个工具类或工具类方法时,大部分时候搜到的都是低质量的碎片化的代码,这些代码如果不加任何控制地被随意引入到工程里,慢慢就会变成屎山代码,轻则影响代码的可阅读性和美感,重则造成不可预计的Bug并极大影响可维护性。
所以这要求我们在添加工具类和方法时必须放眼全局和未来,慎之又慎。
可扩展性:系统为了应对需求的变化而提供的一种应变能力,一般针对新功能。
可维护性:纠正系统错误或缺陷和进行系统优化或升级的难易程度,一般针对已有功能。
根据工具类的特征,将其分为以下两类:
- 工具类,狭义的工具类,极少的依赖,高度可复用,比如:日期工具类、字符串工具类、Bean工具类。
- 平台工具类,自定义的工具类,依赖框架的某个能力,一般不可跨研发平台复用,比如:权限工具类,人员工具类、消息工具类。
- 私有工具类,自定义的工具类,依赖某个具体场景,一般不可跨应用或服务复用,比如:项目工具类,日志工具类。
我理解的好的框架工具类应该具备以下特征:
- 恰到好处的命名,约定大于定义
- 最少的依赖,保证普适性
- 可选的依赖,保证兼容性
- 最低的侵入,保证灵活性
- 避免大而全的方法入参(DTO或者Builder模式)
- 一般工具类都是单例:无构造方法、私有构造方法或构造方法抛异常;提供静态方法,保证易用性
我理解的好的工具类应用是这样的:
- 规避而不是减少重复造轮子,这要求我们新功能必须使用框架提供的工具类;已有功能尽快切换到框架提供的工具类并删除原工具类。
- 团队内达成共识,使用同一个工具类处理同一个功能
- 工具类使用顺序:HuTool --> 自定义工具类 --> 工具类 --> JDK工具类,其他工具类不允许使用
Hutool是一个小而全的工具类库,通过静态方法封装,降低相关API的学习成本,提高效率。
PS:个人使用习惯是需要什么工具类,直接在IDE中联想,然后查看源码的实现是否匹配。
总结:工具类本身并不难,但每一个工具类的作者都应该时刻记着工具类是开放给所有人的,所以在命名、规范性、完备性(除了功能点还有功能面)、适应性(使用上尽量不要有依赖和限制)、易用性、扩展性、维护性、兼容性等方面必须多加思考,做到不丢人和不怕丢人。
胜象大百科









