因為有些要求感覺實是太過奇葩裁僧,收集下來娛樂下大家。
要求如果代碼可以靜態(tài)導(dǎo)入的話,就必須要靜態(tài)導(dǎo)入邻邮。
所有的代碼如果不靜態(tài)導(dǎo)入,就直接 PR 拒絕合并吮螺。
舉例:
equalsAnyIgnoreCase("test","test");這個必須要使用import static org.apache.commons.lang3.StringUtils.equalsAnyIgnoreCase;
如果我們寫成:
StringUtils.equalsAnyIgnoreCase("test","test");
奇葩的架構(gòu)師饶囚,要求這個必須要修改為靜態(tài)導(dǎo)入。
Java 的靜態(tài)導(dǎo)入 (import static) 是從 JDK 1.5 版本開始提供的鸠补,其目的是為了減少字符輸入量萝风,提高代碼的可閱讀性,以便更好地理解程序紫岩。
用于導(dǎo)入指定類的某個靜態(tài)成員變量规惰、方法或全部的靜態(tài)成員變量、方法泉蝌。如果一個類中的方法全部是使用 static 聲明的靜態(tài)方法歇万,則在導(dǎo)入時就可以直接使用 import static 的方式導(dǎo)入。
濫用靜態(tài)導(dǎo)入會使程序更難閱讀勋陪,更難維護贪磺。
靜態(tài)導(dǎo)入后,代碼中就不用再寫類名了诅愚,但是我們知道類是“一類事物的描述”寒锚,缺少了類名的修飾,靜態(tài)屬性和靜態(tài)方法的表象意義就會被無限方法违孝,這會讓閱讀者很難弄清楚其屬性或方法代表何以刹前,甚至是哪一個類的屬性(方法)都要思考想一下,特別是在一個類中有多個靜態(tài)導(dǎo)入的時候還使用了通配符(*)這個靜態(tài)導(dǎo)入簡直是個噩夢雌桑。
還是用 StringUtils 來舉例喇喉。
不是只 Apache Commons 才有 StringUtils 的。
隨便拉個項目校坑,你看看就有多少個 StringUtils拣技,同時 equalsAnyIgnoreCase 這個方法名也不是在一個包使用的。
可能在很多包中都用了這個方法名耍目。
這種奇葩的強制使用靜態(tài)導(dǎo)入的要求过咬,簡直是令人發(fā)指,在特定階段的時候破壞了程序的可讀性制妄。
在實際使用的時候掸绞,對于一些公共方法名,盡量不要使用靜態(tài)導(dǎo)入耕捞。
但是針對測試的一些測試類中使用的斷言衔掸,還是可以使用靜態(tài)導(dǎo)入的。
importstaticorg.hamcrest.CoreMatchers.instanceOf;importstaticorg.hamcrest.MatcherAssert.assertThat;importstaticorg.junit.Assert.assertEquals;
如果上面我們常用的一些測試中使用的斷言俺抽。