Arrays.asList(); Objects.equals(); Collections.sort();
StringUtils.isEmpty(); CollectionUtils.isEmpty() FileCopyUtils.copy();
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工具類就能夠有這麼多命名方式,可謂是集百家之長,至關豐富。翻譯
優勢code
簡單明瞭,熟悉的人這麼用其實蠻爽的。對象
缺點接口
容易與其餘以s結尾的單詞讓人對類的做用產生誤解,例如將News、Goods等pojo類跟Objects工具類放一塊兒。是否是第一感受它們是同一用途,實則否則。ci
優勢
能從類名上對類的用途進行劃分,使用者不容易產生誤解。
缺點
類命名通常爲單數,複數命名形式會顯得總體命名方式不一致。
優勢
能從類名上對類的用途進行劃分,使用者不容易產生誤解,且總體命名方式容易與項目其餘類保持一致。
缺點
這樣就OK了,再較真就無法玩了。
此處不對項目中的Kit、Tool等命名作過多討論,主要仍是對主流的幾種命名方式進行分析。
對於純粹的工具類來講,行業中廣泛仍是以Util或Utils命名方式居多,其餘命名方式固然也可使用,包括上面所列舉的項目中的幾種命名方式,只是說你們提到Util或Utils第一反應都知道是工具類,其餘的命名方式或許須要反應個幾秒鐘。
可是這裏須要說一下Util與Helper的區別,也僅限本身的理解。
在軟件架構中有個軟件重用的概念,分爲水平式重用與垂直式重用。
水平式重用:是指能夠在不一樣應用領域中使用的軟件元素,簡單理解就是業務無關性,能夠在任意業務場景中使用
垂直式重用:是指在一類或具備較多公共性的應用領域之間進行軟部件重用,簡單理解就是能夠在特定的業務領域或業務場景中使用
那麼Util類就屬於上面所說的水平式重用
,Util類更可能是對JDK提供的類進行封裝,或者是某一技術框架本身提供的對框架內部其餘類的使用封裝,可是這類通常都具備業務、領域的無關性。在任何業務、領域下都可使用。因此既然是工具類必定保證其水平式重用這一特性。
Helper翻譯過來助手/幫手,從字面意思來看,這樣的類是做爲輔助類來使用的,那麼問題來了,輔助的對象是誰 ?那麼固然是對別的類的輔助,這裏就有個範圍,哪些類能夠被輔助,理論上全部類或對象若是須要均可以被輔助,但實際中更可能是爲了簡化某一場景下相關類使用的複雜度,而提供了便捷的訪問接口,造成Helper類,而這個場景通常具備業務或領域特徵,因此更多體現的使用垂直式重用
。
我我的來講目前習慣使用Util單數形式命名,項目中的其餘類均以單數形式命名,如:UserController、UserVo這樣的,忽然出現一個複數形式的類會感受有點突兀。
沒什麼特殊要求或我的癖好的狀況下,仍是以Util或Utils大衆最容易理解的方式進行命名,你說我非要用Tool命名咋的了,這麼幹也沒問題,關鍵在於公司或團隊有一套本身的標準就行,我是一個有代碼潔癖的人,團隊中的規範標準我都會進行嚴格統一,前期看似須要花費很多時間,但當內部你們認知可以達成一致時,越日後團隊中你們工做的默契度越高,這樣能最大程度減小溝通成本,減少後期的維護成本。
若是能知足以上需求,怎麼命名真的都OK。