提高你的Java代码质量吧:少用静态导入
一、分析?
從Java 5開始引入靜態(tài)導(dǎo)入語法(import static),其目的是為了減少字符輸入量,提高代碼的可閱讀性,以便更好地理解程序。?
但是,濫用靜態(tài)導(dǎo)入會使程序更難閱讀,更難維護(hù)。靜態(tài)導(dǎo)入后,代碼中就不用再寫類名了,但是我們知道類是“一類事物的描述”,缺少了類名的修飾,靜態(tài)屬性和靜態(tài)方法的表象意義就會被無限方法,這會讓閱讀者很難弄清楚其屬性或方法代表何以,甚至是哪一個類的屬性(方法)都要思考一番(當(dāng)然,IDE友好提示功能另說),特別是在一個類中有多個靜態(tài)導(dǎo)入語句時,若還是用*(星號)通配符,把一個類的所有靜態(tài)元素都導(dǎo)入進(jìn)來,那簡直就是噩夢。
二、場景?
如此段代碼:?
import static java.lang.Math.PI; public class MathUtils{ //計算圓面積 public static double calCircleArea(double r){ return PI * r * r; } //計算球面積 public static double calBallArea(double r){ return 4 * PI * r * r; } }靜態(tài)導(dǎo)入把Math類中的PI常量引入到本類中,這回是程序更簡單,更容易閱讀,只要看到PI就知道是圓周率,不用每次都要把類名寫出來。?
又如此段代碼:?
import static org.jnuit.Assert.*; public class DaoTest{ @Test public void testInsert(){ //斷言 assertEquals("foo",foo); assertFalse(Boolean.FALSE); } }我們從程序中很容易判斷出assertEquals方法時用來判斷兩個值是否相等的,assertFalse方法則是斷言表達(dá)式為假的。這就是具有明確、清晰表象意義的工具類,使用靜態(tài)導(dǎo)入,減少代碼量,提高代碼可讀性的好處。?
但是,如此段代碼:?
import static java.lang.Double.*; import static java.lang.Math.*; import static java.lang.Integer.*; import static java.text.NumberFormat.*; public class Client{ //輸入半徑和精度要求,計算面積 public static void main(String[] args){ double s = PI * parseDouble(args[0]); NumberFormat nf = getInstance(); nf.setMaxinumFractionDigits(parseInt(args[1])); formatMessage(nf.format(s)); } //格式化消息輸出 public static void formatMessage(String s){ System.out.println("圓面積是:" + s); } }就這么一段程序:常量PI,這個知道是圓周率;parseDouble方法可能是Double類的一個轉(zhuǎn)換方法;getInstance方法時那個類的?Client本地類?NumberFormate類?這個方法和formatMessage方法沒有任何區(qū)別—這代碼太難閱讀了,非機(jī)器不可閱讀。?
三、建議?
對于靜態(tài)導(dǎo)入,一定要遵循兩個規(guī)則:?
1.不要使用*(星號)通配符,除非是導(dǎo)入靜態(tài)常量(只包含常量的類或接口)。?
2.方法名是具有明確、清晰表象意義的工具類。
總結(jié)
以上是生活随笔為你收集整理的提高你的Java代码质量吧:少用静态导入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用SmsManager服务群发短信
- 下一篇: 阶乘与斐波那契数的理解