《编写高质量代码:改善Java程序的151个建议》 建议9

来源:互联网 发布:彩票平台源码 编辑:程序博客网 时间:2024/04/26 18:20

9. 少用静态导入

为了减少字符输入量,提高代码的可阅读性,以便更好地理解程序,从Java 5开始引入了静态导入语法( import static )。

// 简单的导入public class MathUtils{    public static double calArea(double r){        return Math.PI * r * r;    }}// 静态导入import static java.lang.Math.Pi;public class MathUtils{    public static calArea(double r){        return PI * r * r;    }}

用 Math.PI 这个语法,使程序简洁了很多,也更容易阅读。

这是基于看到 PI 就知道这是圆周率这种被大家熟知的范畴,想想都知道,如果滥用静态导入会使程序更难阅读,也更难维护,一旦使用了静态导入,代码中就不用再写类名,这时属性和方法的表象意义可以被无限放大,让阅读者很难弄清楚它们代表什么意思,甚至是哪个类的属性(方法)都要思考一番(友好的IDE提示功能另说)。如果引入的是 * 通配符,那简直就是灾难。

import static java.lang.Double.*;import static java.lang.Math.*;import static java.lang.Integer.*;import static java.text.NumberFormat.*;import java.text.NumberFormat;public class Client {public static void main(String[] args){double s = PI * parseDouble(args[0]);NumberFormat nf = getInstance();nf.setMaximumFractionDigits(parseInt(args[1]));System.out.println("面积:" + nf.format(s));}}
所以,对于静态导入,要遵循两个规则:

1. 不使用 * (星号)通配符,除非是导入静态常量类(只包含常量的类或接口)

2. 方法名是具有明确、清晰表象意义的工具类

如 JUnit4 中使用的静态导入例子:

import static org.junit.Assert.*;public class DaoTest{@Testpublic void testInsert(){}//断言assertEquals("foo","foo");assertFalse(Boolean.FALSE);}

0 0
原创粉丝点击