美文网首页
Effective Java-通用程序设计

Effective Java-通用程序设计

作者: 勇往直前888 | 来源:发表于2019-01-30 13:32 被阅读8次

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

    • 要使局部变量最小化,最有力的方法就是在第一次使用它的地方声明

    • 几乎每个局部变量的声明都应该包含一个初始化表达式

    • for循环优先于while循环

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

    for-each 循环可以遍历集合,数组,实现Iterable接口的对象

    了解和使用类库

    • 不要重新发明轮子

    • java.lang , java.util, java.io

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

    • float和double尤其不适合用于货币计算

    • 使用BidDecimal、int或者long进行货币计算

    基本类型优先于基本装箱类型

    • 对装箱基本类型运用==操作符几乎总是错误的

    • 混合使用基本类型和装箱基本类型,就会自动拆箱。如果null对象拆箱,就会得到一个NullPointerException异常。

    • 大的for循环中使用装箱基本类型,会导致大量的装箱拆箱,性能下降

    • 集合中的元素、键、值应该使用装箱类型

    • 在参数化类型中,必须使用装箱类型

    • 反射的方法调用,必须使用装箱类型

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

    • 字符串不适合代替其他的值类型

    • 字符串不适合代替枚举类型

    • 字符串也不适合代替能力表

    当心字符串连接的性能

    • 不要使用字符串连接操作符(+)合并多个字符串(大数组或者for循环),除非性能无关紧要。

    • 为了获得可以接受的性能,请使用StringBuilder替代String

    通过接口引用对象

    • 如果有合适的接口类型存在,那么对于参数、返回值、变量和域来说,就都应该使用接口类型进行声明。

    • 如果没有合适的接口存在,可以用类来引用对象

    接口优先于反射机制

    • 核心反射机制,提供了通过程序访问关于已装载的类的信息。反射的代价:
    1. 丧失了编译时类型检查的好处。

    2. 执行反射所需要的代码非常笨拙和冗长。

    3. 性能损失。

    • 通常,普通应用程序在运行时不应该以反射方式访问对象

    谨慎地使用本地方法

    • JNI允许Java应用程序可以调用本地方法。

    • 使用本地方法来提供性能的做法不值得提倡。

    谨慎地进行优化

    • 优化的弊大于利,特别是不成熟的优化。

    • 不要因为性能而牺牲合理的结构。要努力编写好的程序而不是快的程序。

    • 努力避免那些限制性能的设计决策

    • 要考虑API设计决策的性能后果

    • 为获得好的性能而对API进行包装,这是一种非常不好的想法。

    • 在每次视图做优化之前和之后,要对性能进行测试。

    • 不要费力去编写快速的程序,应该努力编写好的程序,速度自然会随之而来。在设计系统的时候,特别是在设计API、线路层协议和永久数据格式的时候,一定要考虑性能的因素。

    遵守普遍接受的命名惯例

    • 类型参数:T表示任意类型,E表示集合的元素类型,K和V表示映射的键和值类型,X表示异常。序列可以是T、U、V

    相关文章

      网友评论

          本文标题:Effective Java-通用程序设计

          本文链接:https://www.haomeiwen.com/subject/acgtsqtx.html