首页 > 其他 > 详细

写代码的规范!!!!

时间:2019-03-09 14:31:46      阅读:149      评论:0      收藏:0      [点我收藏+]

 

代码规范
第一条:考虑用静态工厂方法代替构造器
原因:静态工厂方法第一大优势它们有名称,第二大优势,不必在每次调用时都创建一个新对象,
第三优势可以返回原返回类型的任何子类型的对象。
(冷不丁的想用枚举来做静态工厂实现)
第四优势在创建参数化类型实例的时候,他们使得代码变得更加简洁。
缺点当然也有:一:类如果不含共有或者受保护的构造器就不能被子类化,二:与其他静态方法没有区别。
遵守命名习惯可以弥补这一劣势,比如newtype创建新对象,gettype获取对象
 所以,一般一个静态工厂方法需要有详细的注释,遵守标准的命名,
 如使用getInstance、valueOf、newInstance等方法名;
第二条:遇到多个构造器参数时要考虑用构造器
第一中构造就是常见的重叠构造器,一个构造器中this(xxx)调用同名构造器,但是参数过多就容易懵了,
可以使用无参模式,build生成不可变对象。
第三条:用私有构造器或枚举类型强化Singleton属性(单例模式)
第四条:通过私有构造器强化不可实例化的能力
第五条:避免创建不必要的对象,重用不可变对象
小心自动拆装箱,要优先使用基本类型而不是装箱基本类型,要当心无意识的自动装箱。
第6条:消除过期对象的引用:下面例子引用了arraylist的remove方法,
如果没有将元素置为null的话,就会随着垃圾回收器活动的增加,或者由于内存占用不断增加,程序性能降低会逐渐表现出来。

   public E remove(int index) {
        rangeCheck(index);

        modCount++;
        E oldValue = elementData(index);

        int numMoved = size - index - 1;
        if (numMoved > 0)
            System.arraycopy(elementData, index+1, elementData, index,
                             numMoved);
        elementData[--size] = null; // clear to let GC do its work

        return oldValue;
    }

内存泄漏的另外一个常见来源是缓存,一旦你把对象引用放到缓存中,
它就很容易被遗忘掉,从而使得它不再有用之后很长时间都保留在缓存之中
如果你需要这样的缓存那么可以使用这个WeakHashMap,当缓存过期之后就会自动删除。

// 初始化3个“弱键”
String w1 = new String("one");
String w2 = new String("two");
String w3 = new String("three");
// 新建WeakHashMap
Map wmap = new WeakHashMap();
// 添加键值对
wmap.put(w1, "w1");
wmap.put(w2, "w2");
wmap.put(w3, "w3");
// 打印出wmap
// ---- 测试 WeakHashMap 的自动回收特性 ----
// 将w1设置null。
// 这意味着“弱键”w1再没有被其它对象引用,调用gc时会回收WeakHashMap中与“w1”对应的键值对
w1 = null;
// 内存回收。这里,会回收WeakHashMap中与“w1”对应的键值对
System.gc();
System.out.println(wmap.toString());
System.out.println(wmap.size());
==========================================================================
{three=w3, two=w2} 2
 

 

写代码的规范!!!!

原文:https://www.cnblogs.com/q1359720840/p/10500394.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!