68条Java最佳实践
这里记录的实际上是《Practical Java》一书的目录,该书共总结了68条Java开发中的最佳实践(best practice)。我把这个目录敲到这里来也有助于自己加深印象,部分术语按照我自己的习惯做了调整。对Java有所了解的同学们看了这个目录大概也能知道它在说什么,毕竟这本书是在总结经验而非描述技术细节。这里面很多条也适用于大多数其它的面向对象语言。
一般技术
实践1:参数以 by value 方式而非 by reference 方式传递
实践2:对不变的 data 和 object reference 使用 final
实践3:默认情况下所有非静态方法都可被重载
实践4:在 arrays 和Vectors 之间慎重选择
实践5:多态优于 instanceof
实践6:必要时才使用 instanceof
实践7:一旦不再需要 object references,就将它设为 null
对象与相等性
实践8:区分 reference type 和 primitive type
实践9:区分 == 和 equals()
实践10:不要依赖 equals() 的缺省实现
实践11:实现 equals() 时必须深思熟虑
实践12:实现 equals() 时优先考虑使用 getClass()
实践13:调用 super.equals() 以唤起基类的相关行为
实践14:在 equals() 方法中谨慎使用 instanceof
实践15:实现 equals() 时需遵循某些规则
万剑补充:Equals()方法实现了等价关系,要求(你要对数学有足够兴趣才能证明…):
自反性:x.equals(x) == true
对称性:x.equals(y) == true y.equals(x) == true
传递性:x.equals(y) == true && y.equals(z) == true x.equals(z) == true
一致性:x.equals(y) == true && x,y没有被修改 多次调用 x.equals(y),依然返回为true
异常处理
实践16:认识“异常控制流”机制
实践17:绝对不可忽视异常
实践18:千万不要遮掩(hide)异常
实践19:明察 throws 子句的缺点
实践20:细致而全面地理解 throws 子句
实践21:使用 finallly 避免资源泄漏
实践22:不要从 try 块中返回
实践23:将 try / catch 块置于循环之外
实践24:不要将异常用于流程控制
实践25:不要每逢出错就使用异常
实践26:在构造函数中抛出异常
实践27:抛出异常之前先将对象恢复为有效状态
性能
实践28:先把焦点放在设计、数据结构和算法身上
实践29:不要依赖编译期优化技术
实践30:理解运行期代码优化技术
实践31:如欲进行字符串拼接,StringBuffer 优于 String
实践32:将对象的创建成本降至最小
实践33:慎防未用上的对象
实践34:将同步减至最低
实践35:尽可能使用 stack 变量
实践36:使用 static、final 和 private 方法以促成内联
实践37:instance 变量的初始化一次就好
实践38:使用基本类型(primitive types)使代码更快更小
实践39:不要使用 Enumeration 或 Iterator 来遍历 Vector
实践40:使用 System.arraycopy() 来复制 arrays
实践41:优先使用 array,然后才考虑 Vector 和 ArrayList
实践42:尽可能复用(reuse)对象
实践43:使用延迟求值(lazy evaluation)
实践44:以手工方式将代码优化
实践45:编译为本机代码(native code)
多线程
实践46:面对 instance 方法,synchronized 锁定的是对象而非方法或代码
实践47:弄清楚 synchronized statics 方法与 synchronized instance 方法之间的差异
实践48:以“private 数据 + 相应访问函数(accessor)” 替换 “public/protected数据”
实践49:避免无谓的同步控制
实践50:访问共享变量时请使用 synchronized 或 volatile
实践51:在单一操作中锁定所有用到的对象
实践52:以固定而全局性的顺序取得多个locks以避免死锁
实践53:优先使用 notifyAll() 而非 notify()
实践54:针对 wait() 和 notifyAll() 使用旋锁(spin locks)
实践55:使用 wait() 和 notifyAll() 替换轮询循环
实践56:不要对上锁对象的对象引用重新赋值
实践57:不要调用 stop() 或 suspend()
实践58:通过线程之间的协作来终止线程
类与接口
实践59:运用接口来实现多继承
实践60:避免接口中的方法发生冲突
实践61:如需提供部分实现,请似乎用抽象类
实践62:区分接口(interface)、抽象类(abstract class)和实体类(concrete class)
实践63:审慎地定义和实现不可变(immutable)类
实践64:欲传递或接受可变(mutable)对象的对象引用时,请实现 clone()
实践65:使用继承或委托来定义不可变类
实践66:实现 clone() 时记得调用 super.clone()
实践67:别只依赖于 finalize() 清理内存以外的资源
实践68:在构造函数内调用 non-final 方法时要当心
分享到:
相关推荐
Java编码最佳实践指南。非常详细,一起分享。
Java高级-12个最重要的J2EE最佳实践 Java工程师需要注意的地方
Java ME核心技术与最佳实践.pdf
Java 异常处理的 9 个最佳实践,在处理异常时可以参考。
Java ME核心技术与最佳实践.pdf 后面的part不需要资源分
NULL 博文链接:https://rangerwolf.iteye.com/blog/804587
Java 中的 I/O 类由一组抽象类和接口组成,这些类和接口协同工作,使 Java 应用程序能够读取和写入数据。其中包括 File、InputStream、OutputStream、Reader、Writer 等类和接口。您可以使用这些类和接口来创建文件...
单元测试最佳实践,对初学者有一定的帮助 。大家可以下载来看看哦
针对复杂的java应用环境进行全方面的性能监控与管理,文章中引用了ca wily apm解决方案,阐述了如何利用外部工具帮助优化java应用系统的性能,确保用户使用体验,针对weblogic,websphere,jboss等主流java中间件...
深入理解Java 7_核心技术与最佳实践 - 成富
深入理解Java.7.核心技术与最佳实践,学习java的一本好书
通过经历的一个项目实例,介绍了 Java 代码优化的过程,总结了优化 Java 程序的一些最佳实践,分析了进行优化的方法,并解释了性能提升的原因。作者从多个角度分析导致性能低的原因,并逐个进行优化,最终使得程序的...
深入理解java虚拟机第二版jvm高级特性与最佳实践。是学习jvm虚拟机和class文件的一本十分经典的书籍
前言Java是目前用户最多、使用范围最广的软件开发技术之一。Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java API、Ja
探讨,包含大量最佳实践。 全书的主要内容可分为三大部分:第一部分是1 ~6 章,全面阐释Java 7 在语法、 JVM 、类库和API 等方面的所有重要新功能和新特性,掌握这部分内容有助于大幅度提升编 码效率和提高代码...
Java ME核心技术与最佳实践 part2 本书分成了4个part,请将这个4个part下载完以后,按照顺序修改名称例如1.rar 2.rar 3.rar,4.rar就可以解压缩了。
Java8里面lambda的最佳实践Java开发Java经验技巧共7页.pdf.zip
Java编码最佳实践之-避免使用continue.doc
Java面向对象设计最佳实践_-_内置类设,是开发者的必备文档
Java8之lambda最佳实践_动力节点Java学院整理,动力节点口口相传的Java黄埔军校