代码优化
文章平均质量分 93
阁楼猫
这个作者很懒,什么都没留下…
展开
-
【代码优化】考虑使用静态工厂方法代替构造器
静态工厂方法与设计模式中的工厂方法模式不同,和设计模式中的工厂方法模式不直接对应。使用静态工厂方法比构造器的优势:第一、静态工厂方法是有名称的,而构造器是通过参数判断的。每个静态工厂方法都有自己的名字,可以根据名称就可以判断它要做什么事情,而构造器是做不到的。如:构造器BigInteger(int,int),返回BigInteger可以是素数,偶数等,而用名称Big原创 2014-06-19 23:02:58 · 963 阅读 · 0 评论 -
【代码优化】返回0长度数组或者集合
改掉你从C语言继承过来的习惯,我们在java中没理由返回类型为数组或者集合返回null。private final List InStock =...;public Cheese[] getCheeses() { if( InStock.size() ==0){ return null; }}这种是我们经常使用的 返原创 2014-08-02 17:55:03 · 1115 阅读 · 0 评论 -
【代码优化】坚持使用Override注解
对于传统程序员,注解里面最重要的就是Override注解了。这里的注解,都是指只能用在方法中的声明,她表示被注解的方法用于覆盖了父类的一个声明,如果坚持使用这个注解,可以防止一大类的非法错误。public class Bigram{ private final char first; private final char second; public Bigram (char fir原创 2014-07-13 17:30:44 · 1123 阅读 · 0 评论 -
【代码优化】注解优先命名模式
一般命名模式表明有些程序元素需要通过某种工具进行特殊处理。例如:JUnit测试框架要求用户一定要用test作为测试方法名称的开头。这种方法有几个严重的缺陷首先,文字拼写错误会导致失败,但是没有任何提示。比如,把方法名称命名写成tsetSafety而不是testSafety时。JUnit不错报错,但是也不会执行测试。其次,无法确保它们只用于相应的程序元素上。比如,将每个类命名原创 2014-07-13 17:09:18 · 1443 阅读 · 0 评论 -
【代码优化】反射机制的慎用
反射——给定一个类的class实例,你可以获得Constructor,method和field实例。而且,Constructor,method和field实例使你能够通过反射机制操作他们的底层对等体。反射机制允许一个类使用另一个类,即使当前被编译的时候,后者还没根本不存在。然后有这种超能力是需要付出代价的:丧失了编译时候的类型检查的好处——包括异常检查。如果通过反射调用原创 2014-08-04 14:56:46 · 1468 阅读 · 0 评论 -
【代码优化】for-each代替普通的for循环或者while循环
对于集合的遍历首选方法是for-eachfor(Element e :c){ doSomething(e);}这是1.5版本之后的做法;java1.5之前使用的是Iterator迭代器。为了弄清楚为啥比普通的for循环或者whlie循环好,请看一下代码Iterator i=c.iterator();while(i.hasNext()){原创 2014-08-02 23:10:29 · 2917 阅读 · 0 评论 -
【代码优化】使用enum代替int常量
经常带代码中看见这样的代码:public static final int APP_START=1;public static final int APP_PAUSE=0;public static final int APP_STOP =2;public static final int PLAY_START=1;public static final int P原创 2014-07-07 22:23:54 · 2269 阅读 · 0 评论 -
【代码优化】equals深入理解
覆盖equals时,遵守通用约定对equal方法的覆盖看起来很简单,但是有许多情况是容易导致错误,最好的避免这些错误的办法就是不覆盖equals方法.必须遵循的原则:自反性--对于任何非空的引用 x,有x.equals(x) 为true;对称性--对于任何非空的引用x,y,如果x.equals(y) 为true,则必有y.equals(x) 为true;传递原创 2014-07-02 12:01:22 · 1057 阅读 · 0 评论 -
【代码优化】私有构造器使用及对象创建优化
1、使用私有构造器或者枚举类型强化singleton 1》单例模式---私有构造器,提供一个公有的成员是一个静态工厂方法:public class SingleTon{ private static final SingleTon single=new SingleTon(); private SingleTon(){ } pu原创 2014-07-01 11:00:29 · 847 阅读 · 0 评论 -
【代码优化】方法签名及参数检查
参数检查: 绝大多数方法的构造器对于传递给它的参数值会有某些限制。例如,索引值必须是非负数,对象不能为null等等。如果传递无效参数给方法,在执行前没对参数进行检查,该方法可能在处理过程中失败,并且产生令人费解的异常。更糟的是,该方法可以正常返回数据。但是会得到一个错误的结果,你还认为是正确的,没发现其中的倪端。所以对于方法参数的检查是有必要的。常见的几个错误,Il原创 2014-07-21 22:35:45 · 1036 阅读 · 0 评论 -
【代码优化】构造器参数繁多时候,考虑使用builder模式
静态工厂和构造器有个共同的局限性:都不能很好的扩展到大量的可选参数。1、对于多个可选参数的构造器,我们都习惯采用重叠构造器模式,比如一个参数的构造器调用2个参数的构造器, 2个参数的构造器调用3个参数的,以此类推。public class User{ private int id; private String name; priva原创 2014-07-01 11:09:33 · 1069 阅读 · 0 评论 -
Fresco 5.0以上内存持续增长问题优化
fresco是android一款比较好的图片处理框架,特别是在5.0以下,效果很佳。在5.0以下系统,Fresco将图片放到一个特别的内存区域ashmem中。这块内存我们通过android studio查看时不会显示,回收机制与java回收机制差不多。当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅,减少因图片内存占用而引发的OOM。5.0以上系统,我们使用了Fresco,但原创 2017-03-24 13:29:28 · 8896 阅读 · 18 评论