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

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{
	@Test
	public void testInsert(){}
	//断言
	assertEquals("foo","foo");
	assertFalse(Boolean.FALSE);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值