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 Enterprise 最佳实践》是Java开发者们深入理解企业级应用开发的重要参考资料,尤其是其中的JDBC最佳实践部分,对于数据库交互的优化和性能提升有着关键性的影响。JDBC(Java Database Connectivity)是Java...
Java编码最佳实践是提高代码质量、可读性、性能和可维护性的关键。这份指南涵盖了多个方面的编程建议,旨在帮助开发者遵循良好的编程习惯,确保代码的高效运行。 1. **资源管理**:在处理文件、流或其他资源时,...
对于Java工程师来说,掌握J2EE的最佳实践至关重要,这不仅可以提高代码质量,还能优化性能,确保系统的可维护性和可扩展性。以下是对"Java高级-12个最重要的J2EE最佳实践"的详细解释: 1. **模块化设计**:将应用...
Java异常处理的9个最佳实践涵盖了开发者在进行Java编程时应当遵循的一系列规则和方法,以确保代码的健壮性和可维护性。异常处理是编程中的一个重要部分,它能够帮助我们更有效地管理和响应程序运行时的错误情况。 ...
Java ME核心技术与最佳实践.pdf
《深入理解Java7核心技术与最佳实践》一书深入剖析了Java 7这一版本中的关键技术和最佳实践,旨在帮助开发者全面提升对Java平台的理解和应用能力。Java 7是Java发展历程中的重要里程碑,它引入了许多创新特性,提升...
Java ME核心技术与最佳实践.pdf 后面的part不需要资源分
《深入理解Java虚拟机JVM高级特性与最佳实践》一书,正是为解决这一需求而生。 本书的作者周志明站在前人的基础上,对JVM进行了全面而深入的解读,不仅覆盖了JVM的基础概念,而且深入探讨了JVM的高级特性,让读者...
《Java虚拟机高级特性与最佳实践》是一本深入解析Java虚拟机(JVM)的权威著作,尤其在第二版中,作者对JVM的高级特性进行了详尽的阐述,并提供了丰富的最佳实践指导。这本书对于想要深入理解Java平台的开发者来说,...
针对复杂的java应用环境进行全方面的性能监控与管理,文章中引用了ca wily apm解决方案,阐述了如何利用外部工具帮助优化java应用系统的性能,确保用户使用体验,针对weblogic,websphere,jboss等主流java中间件...
深入理解Java 7_核心技术与最佳实践 - 成富
深入理解Java.7.核心技术与最佳实践,学习java的一本好书
到目前为止,GraalVM提供了两种运行Java程序的方法:将Java HotSpot VM与GraalVM JIT(即时)编译器一起使用,以及第二种方法:使用GraalVM Native Image编译为本机可执行文件。 今天,我们很高兴地宣布一种在...
Java ME核心技术与最佳实践 part2 本书分成了4个part,请将这个4个part下载完以后,按照顺序修改名称例如1.rar 2.rar 3.rar,4.rar就可以解压缩了。
本文档“Java面向对象设计最佳实践—内置类设计”深入探讨了如何利用Java的内置类机制来优化代码结构,提高可读性和可维护性。以下是基于这个主题的详细知识点: 1. **内置类(Inner Classes)的概念**: 内置类...
根据提供的文件信息,我们可以推断出这是一本关于Java 7 的书籍——《深入理解Java 7 核心技术与最佳实践》,并且提供了该书PDF版本的下载链接。接下来,我们将围绕这一主题展开讨论,主要从以下几个方面进行深入...
通过阅读这本书,我们可以了解到一系列关键的技术概念和最佳实践,这些对于任何想要在大型网站系统开发中提升技术水平的工程师来说都是必不可少的。 1. **Java基础与进阶**:书中可能涵盖了Java语言的基础知识,...
本项目是基于Java的Jetpack MVVM最佳实践设计源码,包含137个文件,其中包括71个Java文件、36个XML文件、10个PNG图片文件、4个Gradle文件、2个YML文件、2个AAR文件、2个Properties文件、1个Editorconfig文件和1个...
Java8之lambda最佳实践_动力节点Java学院整理,动力节点口口相传的Java黄埔军校