`

高效Java摘要

 
阅读更多

Effective Java

• Creating and Destroying Objects创建和销毁对象

1. Consider static factory methods instead of constructors

考虑用静态工厂方法代替构造器

2. Consider a builder when faced with many constructor parameters

遇到多个构造器参数时要考虑用构建器

3. Enforce the singleton property with a private constructor or an enum type

用私有构造器或者枚举类型强化singleton属性

4. Enforce noninstantiability with a private constructor

通过私有构造器强化不可实例化的能力

5. Avoid creating unnecessary objects

避免创建不必要的对象

6. Eliminate obsolete object references

消除过期的对象引用

7. Avoid finalizers

避免使用终结函数

 

• Methods Common to All Objects对于所有对象都通用的方法

8. Obey the general contract when overriding equals

改写equals时请遵守通用约定

9. Always override hashCode when you override equals

改写equals时总要改写hashCode

10. Always override toString

始终要改写tostring

11. Override clone judiciously

谨慎地改写clone

12. Consider implementing Comparable

考虑实现Comparable接口

 

• Classes and Interfaces类和接口

13. Minimize the accessibility of classes and members

使类和成员的可访问性最小化

14. In public classes, use accessor methods, not public fields

在公有类中使用访问方法而非公有域

 

15. Minimize mutability

使非可变性最小化

16. Favor composition over inheritance

复合优先于继承

17. Design and document for inheritance or else prohibit it

要么为继承而设计,并提供文档说明,要么就禁止继承

18. Prefer interfaces to abstract classes

接口优于抽象类

19. Use interfaces only to define types

接口只用于定义类型

20. Prefer class hierarchies to tagged classes

类层次优于标签类

21. Use function objects to represent strategies

用函数对象表示策略

22. Favor static member classes over nonstatic

优先考虑静态成员类

 

• Generics泛型

23. Don’t use raw types in new code

请不要在新代码中使用原生态类型

24. Eliminate unchecked warnings

消除非受检警告

25. Prefer lists to arrays

列表优先于数组

26. Favor generic types

优先考虑泛型

27. Favor generic methods

优先考虑泛型方法

28. Use bounded wildcards to increase API flexibility

利用有限制通配符来提升API的灵活性

29. Consider typesafe heterogeneous containers

优先考虑类型安全的异构容器

 

• Enums and Annotations枚举和注解

30. Use enums instead of int constants

用enum代替int常量

31. Use instance fields instead of ordinals

用实例域代替序数

32. Use EnumSet instead of bit fields

用EnumSet代替位域

33. Use EnumMap instead of ordinal indexing

用EnumMap代替序数索引

34. Emulate extensible enums with interfaces

用接口模拟可伸缩的枚举

35. Prefer annotations to naming patterns

注解优先于命名模式

36. Consistently use the Override annotation

坚持使用override注解

37. Use marker interfaces to define types

用标记接口定义类型

 

• Methods方法

38. Check parameters for validity

检查参数的有效性

39. Make defensive copies when needed

必要时进行保护性拷贝

40. Design method signatures carefully

谨慎设计方法签名

41. Use overloading judiciously

慎用重载

42. Use varargs judiciously

慎用可变参数(varargs)

43. Return empty arrays or collections, not nulls

返回零长度的数组或者集合,而不是null

44. Write doc comments for all exposed API elements

为所有导出的API元素编写文档注释

 

• General Programming通用程序设计

45. Minimize the scope of local variables

将局部变量的作用域最小化

46. Prefer for-each loops to traditional for loops

for-each循环优先于传统的for循环

 

47. Know and use the libraries

了解和使用类库

48. Avoid float and double if exact answers are required

如果需要精确的答案,请避免使用float和double

49. Prefer primitive types to boxed primitives

原语类型优先于装箱的原语类型

50. Avoid strings where other types are more appropriate

如果其他类型更适合,则尽量避免使用字符串

51. Beware the performance of string concatenation

了解字符串连接的性能

52. Refer to objects by their interfaces

通过接口引用对象

53. Prefer interfaces to reflection

接口优先于反射机制

54. Use native methods judiciously

谨慎地使用本地方法

55. Optimize judiciously

谨慎地进行优化

56. Adhere to generally accepted naming conventions

遵守普遍接受的命名惯例

 

• Exceptions异常

57. Use exceptions only for exceptional conditions

只针对异常的条件才使用异常

58. Use checked exceptions for recoverable conditions and runtime exceptions for programming errors

对可恢复的条件使用受检异常,对编程错误使用运行时异常

59. Avoid unnecessary use of checked exceptions

避免不必要地使用受检的异常

60. Favor the use of standard exceptions

尽量使用标准的异常

61. Throw exceptions appropriate to the abstraction

抛出与抽象相对应的异常

62. Document all exceptions thrown by each method

每个方法抛出的所有异常都要有文档

63. Include failure-capture information in detail messages

在细节消息中包含失败-捕获信息

64. Strive for failure atomicity

努力使失败保持原子性

65. Don’t ignore exceptions

不要忽略异常

 

• Concurrency并发

66. Synchronize access to shared mutable data

同步访问共享的可变数据

67. Avoid excessive synchronization

避免过多同步

68. Prefer executors and tasks to threads

executor和task优先于线程

69. Prefer concurrency utilities to wait and notify

并发工具优先于wait和notify

70. Document thread safety

线程安全性的文档化

71. Use lazy initialization judiciously

慎用延迟初始化

72. Don’t depend on the thread scheduler

不要依赖于线程调度器

73. Avoid thread groups

避免使用线程组

 

• Serialization序列化

74. Implement Serializable judiciously

谨慎地实现serializable

75. Consider using a custom serialized form

考虑使用自定义的序列化形式

76. Write readObject methods defensively

保护性地编写readobject方法

77. For instance control, prefer enum types to readResolve

对于实例控制,枚举类型优先于readResolve

78. Consider serialization proxies instead of serialized instances

考虑用序列化代理代替序列化实例

 

 

分享到:
评论

相关推荐

    JAVA技术摘要(内容荟萃的解决方案)

    这份"JAVA技术摘要(内容荟萃的解决方案)"涵盖了Java技术的多个关键方面,为开发者提供了一站式的知识宝库。以下是根据描述和标签提炼出的一些主要知识点: 1. **Java基础**:Java是一种面向对象的编程语言,它的...

    java 教程 摘要文档

    Java教程摘要文档主要聚焦于Java编程语言的学习概览,它可能是为初学者或者有经验的开发者提供的一份简明教程,旨在帮助他们理解和掌握Java的核心概念。Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems...

    java源码包---java 源码 大量 实例

    摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序  Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构,  当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接...

    JAVA 加密算法(很好的算法,经典摘要)

    Java加密算法是信息安全领域中的重要组成部分,用于保护数据的隐私性和完整性。在Java平台上,有多种内置的加密库,如Java Cryptography Extension (JCE) 和 Java Cryptography Architecture (JCA),它们为开发者...

    编写高效优雅Java程序Java系列2021.pdf

    标题《编写高效优雅Java程序Java系列2021.pdf》和描述《编写高效优雅Java程序Java系列2021.pdf》共同指向了文档内容的重点,即如何编写高效和优雅的Java程序。文档从多个方面给出了编程建议和最佳实践,涵盖到了面向...

    java web视频摘要.doc

    理解Servlet的工作原理对于编写高效、可维护的Web服务至关重要。 张孝祥老师的教学风格深入浅出,注重实践,他的课程不仅包含理论知识,还强调实际操作,使学习者能够亲身体验编程的乐趣。他丰富的开发和教学经验...

    java源码包3

    摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序  Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构,  当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接...

    java源码包2

    摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序  Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构,  当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接...

    java类外文翻译

    本资源摘要信息主要介绍Java技术在商业应用中的应用,涵盖了Java技术的历史、影响、组件、概念和应用领域。下面是相关知识点: 1. Java技术的历史:Java技术的发展过程、影响和应用领域的演变。 Java技术的历史...

    Java自学之道摘要

    《Java自学之道》是针对Java初学者的一本实用参考资料,由闵开慧撰写。...通过本书,读者不仅可以学习到Java的基础知识,还能掌握高效的学习方法和解决实际问题的技巧,为自己的Java开发之路打下坚实的基础。

    JAVA中英文翻译+JAVA文献检索

    例如,"Effective Java"是一本著名的参考书籍,其中包含了编写高效、可维护Java代码的建议。 在实际开发中,文献检索和参考文献的使用能够帮助我们解决各种编程挑战,如性能优化、错误调试和新技术的应用。通过阅读...

    基于JAVA语言的聊天室

    这样可以确保即使有多个用户同时发送消息,服务器也能高效地处理并回应。 3. **输入输出流**:JAVA的InputStream和OutputStream类用于读写网络数据。服务器接收客户端发来的消息时,会使用InputStream;而当需要向...

    Java时钟程序源代码

    1. **Java基础**: Java是一种广泛使用的面向对象的编程语言,具有跨平台性、安全性、稳定性和高效性。在Java时钟程序中,我们主要会运用到类、对象、方法等核心概念。 2. **Java GUI**: 为了创建时钟的可视界面,...

    JAVA开源关键词提取框架

    总的来说,Java开源关键词提取框架为开发者提供了一种高效、灵活的方式,帮助他们从大量文本数据中抽取出最有价值的信息,对于数据挖掘、信息检索和文本分析等应用场景有着重要的实用价值。通过深入研究和实践这些...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    Java企业级开发项目实践

    以上知识点是“Java企业级开发项目实践”的核心内容,深入理解和掌握这些,将有助于开发者在实际项目中解决各种挑战,打造出高效、稳定的企业级应用。通过阅读《Java企业级开发项目实践.pdf》这份文档,你将能够获得...

    Java 财务管理系统源码

    Java 财务管理系统源码 ...这样,它可以帮助他们保持记录最新且更高效。 从用户的角度来看,用户只需在该系统中开设一个账户即可。作为用户,他/她可以存入他们想要存入的金额。他们还可以提取资金。

    java小学生资料.rar

    3. **Java摘要.doc**:这可能是对Java核心概念的精炼总结,用于帮助记忆和回顾关键点。它可能包括了每个主题的核心概念、重要知识点和关键代码片段,是快速复习的好工具。 4. **Java前言.doc**:这个文档可能包含了...

    基于 Java+MySQL 实现(GUI)图书管理系统【100011072】

    在本项目"基于 Java+MySQL 实现(GUI)图书管理系统【100011072】"中,我们看到一个综合应用了Java编程语言、数据库管理(MySQL)以及图形用户界面(GUI)设计的课程设计项目。这个系统旨在为图书馆提供一套完整的...

Global site tag (gtag.js) - Google Analytics