在毕业工作的这两个月里,项目开发过程中总有些代码自己感觉写的不漂亮,总感觉会有更好的方式,然而时间又有限,所以在不影响程序运行的情况下就搁在一边了,然而有这样的疙瘩在心里总感觉不爽。所以工作之余,拜读改善java程序的151个建议这本书,并根据自己实际情况,做出整理。下面的都以建议的形式给出,代码千变万化,这里介绍的是比较高质量的建议写法。
下边是昨天看的一些知识整理:避免带有变长参数的方法重载
在项目的开发中,我们有需要把不确定数量的参数传递到方法,java5直接都是把形参定义成Collection接口或其子类类型,亦或是数组,这种方法的缺点是需要对实参进行判断和筛选,比如实参为null或者长度为0的Collection或数组,这是书上的原话,其实在实际项目中都要进行判null操作,比如
public void fun2(Collection<Integer> c) {
if(c != null)
for(int tmp :c) {
System.out.println(tmp);
}
}
public void fun(int... var) {
if(var != null)
for(int tmp :var) {
System.out.println(tmp);
}
}
如果不判null,就有可以抛NullPointerException
public class demo4 {
public void foo(int a,int b) {
System.out.println("this is fixed args method");
}
public void foo(int a,int... b) {
System.out.println("this is variable args method...");
}
public static void main(String[] args) {
demo4 d = new demo4();
d.foo(1, 2);
d.foo(1, 2,3);
}
}
/**
* d.foo(1,2)为什么会调用第一个foo方法?编译器是如何实现的?
* 因为int是一个原生数据类型,而数组本身是一个对象,编译器"偷懒",于是从最简单的开始"猜想"
* 只要符合编译通过,则最先调用
* 为了让使代码更具可读性,建议考虑不用变长参数的方法重载
*/
this is fixed args method
this is variable args method...