`
href
  • 浏览: 7784 次
  • 性别: Icon_minigender_1
  • 来自: 福建
最近访客 更多访客>>
社区版块
存档分类
最新评论
文章列表
多线程程序设计比单线程程序设计要困难的多。所以如果一个库中的类能够帮助你从底层的多线程程序设计中解脱出来,那么一定要使用这个类。 第48条:对共享可变数据的同步访问 synchronized关键可以保证在同一个时刻,只有一个线程在执行一条语句,或者一段代码块。 同步是一种互斥的方式,即当一个对象被一个线程修改的时候,可以阻止另一个线程观察到内部不一致的状态。 同步不仅可以阻止一个线程看到对象处于不一致的状态中,还可以保证通过一系列看似顺序执行的状态转变序列,对象从一种一致的状态变迁到另一种一致的状态,每一个线程进入到一个被同步的方法或者代码块的时候,它会看到由一个锁控制的以前所有状态转变的 ...
第39条:只针对不正常的条件才使用异常 try{ int i=0; while(true) a[i++].f(); }catch(ArrayIndexOutOfBoundsException e){ } 三个错误: 1.异常机制的设计初衷是用于不正常的情形,所以很少会有jvm实现试图对它们的性能做优化。所以,创建,抛出 ...
第29条:将局部变量的作用域最小化 将局部变量的作用域最小化,可以增加代码的可读性和可维护性,并降低出错的可能性。 使一个局部变量的作用域最小化,最有力的技术是在第一次使用它的地方声明。如果一个变量在使用 ...
第23条:检查参数的有效性 极大多数方法和构造函数都会对于传递给他们的参数值有某些限制。你应该在文档中清除的指明这些限制,并且在方法体的起始处对参数进行检查,以强迫施加这些限制。 如果一个无效的参数值被传递给一个方法,而这个方法在执行之前首先对参数进行检查,则它很快会失败,并且清除的以一个适当的异常指明错误原因。如果这个方法没有进行参数检查,有可能会发生几种情形。处理过程中失败,并且尝试一个令人迷惑的异常。更差的是,反悔正常,但计算结果是错误的。最糟糕的是,正常返回,但使得对象处于一种被破坏的状态,在某个不确定的时候引发出来错误。 非公有的方法通常应该使用断言来检查他们的参数,而不使用正常的 ...
第19条:用类代替结构 如果一个公有类暴露了它的数据域,那么要想在将来改变该类内部数据表示是不可能得,因为公有类的客户代码已经遍布各处了。然而,如果一个类是包级私有的,或者是一个私有嵌套类,则直接暴露其数据域并没有本质的错误(该些情况没有对外公开)。(正确做法,私有域,公有的get,set方法)。 第20条:用类层次来代替联合。 第21条:用类来代替enum结构(指c里的enum)。 类型安全枚举模式: 多路分发技术: public abstract class Operation{    private final String name;    Operation(String nam ...
第12条:使类和成员的可访问能力最小化 要想区别一个良好的模块与一个设计不好的模块,最重要的因素是,这个模块对于外部的其他模块而言,是否隐藏了内部的数据和其他的实现细节。一个设计良好的模块会隐藏所有的实现 ...
第7条:在改写equals的时候请遵守通用约定 在改写equals方法的时候,你必须要遵守通过约定 1.自反性:对于任意的引用值x,x.equals(x)一定为true 2。对称性:对于任意的引用x和y,当且仅当y.equals(x)返回true时,x.equal(y)也一定返回true 3. ...
第1条:考虑用静态工厂方法代替构造函数 好处: 1。静态工厂方法的第一个好处是,与构造函数不同,静态方法具有名字 2.静态工厂方法的第二个好处是与构造函数不同,它们每次被调用的时候,不要求非得创建一个新的对象 3. ...
Global site tag (gtag.js) - Google Analytics