Java中的工具类究竟如何命名?

先来几个例子

  • JDK自带工具类

 

Arrays.asList(); Objects.equals(); Collections.sort();

 

  • Spring框架工具类

 

StringUtils.isEmpty(); CollectionUtils.isEmpty() FileCopyUtils.copy();

 

  • Hutool工具类

 

StrUtil.isEmpty(); CollectionUtil.isEmpty(); FileUtil.copy();

 

咱们发现各组例子之间的命名方式均不同,总结一下分为三种:架构

 

一、JDK主要以操做对象的复数形式命名框架

二、Spring框架的工具类以对象或用途 + Util复数方式命名工具

三、Hutool框架的工具类则以对象或用途 + Util单数方式命名ui

 

OK,看完上面的再看下咱们项目中的工具类命名方式spa

 

 StringUtil.isEmpty();  StringUtils.isEmpty();  StringKit.isEmpty();  StringHelper.isEmpty();  StringTool.isEmpty();  StringTools.isEmpty();

 

能够看到一个简单的String工具类就能够有这么多命名方式,可谓是集百家之长,至关丰富。翻译

 

几种命名方式的比较

 

JDK为表明的对象复数形式

 

优势code

简单明了,熟悉的人这么用其实蛮爽的。对象

 

缺点接口

容易与其余以s结尾的单词让人对类的做用产生误解,例如将News、Goods等pojo类跟Objects工具类放一块儿。是否是第一感受它们是同一用途,实则否则。ci

 

Spring框架为表明的对象Util复数形式

 

优势

能从类名上对类的用途进行划分,使用者不容易产生误解。

 

缺点

类命名通常为单数,复数命名形式会显得总体命名方式不一致。

 

Hutool框架为表明的对象Util单数形式

 

优势

能从类名上对类的用途进行划分,使用者不容易产生误解,且总体命名方式容易与项目其余类保持一致。

  

缺点

这样就OK了,再较真就无法玩了。

 

项目中的命名方式

 

此处不对项目中的Kit、Tool等命名作过多讨论,主要仍是对主流的几种命名方式进行分析。

 

到底如何命名 ?

 

对于纯粹的工具类来讲,行业中广泛仍是以Util或Utils命名方式居多,其余命名方式固然也可使用,包括上面所列举的项目中的几种命名方式,只是说你们提到Util或Utils第一反应都知道是工具类,其余的命名方式或许须要反应个几秒钟。

 

可是这里须要说一下Util与Helper的区别,也仅限本身的理解。

 

在软件架构中有个软件重用的概念,分为水平式重用与垂直式重用。

 

水平式重用:是指能够在不一样应用领域中使用的软件元素,简单理解就是业务无关性,能够在任意业务场景中使用

 

垂直式重用:是指在一类或具备较多公共性的应用领域之间进行软部件重用,简单理解就是能够在特定的业务领域或业务场景中使用

 

那么Util类就属于上面所说的水平式重用,Util类更可能是对JDK提供的类进行封装,或者是某一技术框架本身提供的对框架内部其余类的使用封装,可是这类通常都具备业务、领域的无关性。在任何业务、领域下都可使用。因此既然是工具类必定保证其水平式重用这一特性。

 

Helper翻译过来助手/帮手,从字面意思来看,这样的类是做为辅助类来使用的,那么问题来了,辅助的对象是谁 ?那么固然是对别的类的辅助,这里就有个范围,哪些类能够被辅助,理论上全部类或对象若是须要均可以被辅助,但实际中更可能是为了简化某一场景下相关类使用的复杂度,而提供了便捷的访问接口,造成Helper类,而这个场景通常具备业务或领域特征,因此更多体现的使用垂直式重用

 

总结

我我的来讲目前习惯使用Util单数形式命名,项目中的其余类均以单数形式命名,如:UserController、UserVo这样的,忽然出现一个复数形式的类会感受有点突兀。

 

没什么特殊要求或我的癖好的状况下,仍是以Util或Utils大众最容易理解的方式进行命名,你说我非要用Tool命名咋的了,这么干也没问题,关键在于公司或团队有一套本身的标准就行,我是一个有代码洁癖的人,团队中的规范标准我都会进行严格统一,前期看似须要花费很多时间,但当内部你们认知可以达成一致时,越日后团队中你们工做的默契度越高这样能最大程度减小沟通成本,减少后期的维护成本。

 

若是能知足以上需求,怎么命名真的都OK

相关文章
相关标签/搜索