Java
Shielderlion
这个作者很懒,什么都没留下…
展开
-
Java javapractices (1) - Avoid basic style errors
Common Practices 很多新手都会犯同样的风格错误,这样的风格错误不会使程序运行有问题,但是会使你的代码不好维护。从本质上来说,新手代码都不太具有可读性。 下面是一些常见的基本风格错误: 类名太长类方法名太长很少或没有文档(javadoc)名称上无法区分局部变量(local variables),参数(arguments), 成员变量(fields)许多空的catch块,翻译 2015-05-09 23:03:21 · 430 阅读 · 0 评论 -
Java javapractices (2) - Consider composition instead of subclassing
把组合当成继承的代替方案 组合: 采用转发调用到某个成员变量 不会对该成员变量的具体实现有依赖 由于可以运行时而不是编译时决定,相对更灵活 继承: 由于和父类或超类的实现紧密耦合,它破坏了封装性。 给父类或超类添加方法会破坏子类 父类或超类会同时添加进来 不同的包可能有不同的人来维护,从不同的包来继承会引入风险 例外的情况是基于模板的设计模式,这翻译 2015-05-10 15:46:09 · 279 阅读 · 0 评论 -
Java Tips and Best practices to avoid NullPointerException in Java Applications
1) call equals() and equalsIngoreCase method on known String literal rather unknow object. eg. "knowObject".equals(unknowObjet)就很好 2)Prefer valueOf() Over toString() where both return same resul翻译 2015-05-20 20:30:20 · 350 阅读 · 0 评论 -
assert使用场景
Assert use cases 常用的用assert场景: 先决条件(private方法中) - 方法调用者必须满足这些需求 后置条件 - 检查结果 类不变式class invariant - 检查对象状态 运行时不可达代码 - 某些分支预期不可达,但无法在编译器做检查(常见在else分支或switch的default分支) 下面是例子 import java.ut翻译 2015-06-02 14:30:52 · 4719 阅读 · 0 评论 -
Java参数检查
Validate method arguments 方法的第一行往往都是检查参数的合法性,其理念就是越早失败越好,这对于构造函数尤其重要。 对于private的方法, 跳过参数合法行检查策略是一个合理的策略, 因为private的方法只有被类自身调用,类作者应该能够保证调用private方法时参数的有效性。 如果有必要,可在private方法中可以用assert这个关键字来检翻译 2015-06-01 20:16:28 · 1143 阅读 · 0 评论 -
不要在构造函数里往外传this参数
Don't pass 'this' out of a constructor 在一个类例,this关键字指向一个native对象,当前类的实例。在一个构造函数里,this一般有以下几种使用方式. 1. 在第一行,用this(...)调用其他构造函数 2. 用this.filedName的形式访问设置属性 3. 给其他对象的方法当参数,比如blah.operation(this);翻译 2015-06-01 20:39:32 · 752 阅读 · 0 评论 -
按协约设计Design by Contract
一个类或接口的Specification(规范)是它提供的所有非私有的项的集合,作为服务提供给调用方,以及在javadoc中提供的使用指南。 创建一个Specification(规范)是一件很有挑战的事,需要做到以下几点: * 越简单越好 * 越清晰越好 * 不含糊,不具二义性 * 准确 * 让读者完全忘掉实现细节(除非为了找bug) * 让读者很容易掌握 按协约设翻译 2015-10-16 19:54:08 · 604 阅读 · 0 评论 -
可子类化设计
1. 可子类化设计 为了创建可子类化的类需要注意以下几点: 1.1 所有的构造函数,readObject,以及clone不能调用可重载的方法(非private, 非static,非final) 1.2 如果有一个方法依赖于一个可重载方法的实现,这个依赖需要在javadoc里显式声明 1.3 如非必要,不实现Serializable接口 1.4 如非必要,不实现Cloneable接口翻译 2015-11-05 20:52:15 · 363 阅读 · 0 评论