Effective Java(第3版)第8 - 11章总结

2020-08-07  本文已影响0人  纳米君

看第二遍的过程中,总结了这些笔记。废话挺多,翻译也很一般,读起来略费劲。有些知识点实用性很低,或者比较初级,就略过了。个人认为此书不值豆瓣那高分。

代码见github仓库JavaSE中的cn.tl.effective包下,其中还有很多其他代码


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

如果返回 null,那样会使 API 更难以使用,也更容易出错,而且没有任何性能优势

第57条:将局部变量的作用域最小化

在我们第一次需要它的地方进行声明,可读性和维护性更高

第57条:了解和使用类库(随机数)

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

在货币计算中,请使用 BigDecimal、int、long。

第63条:了解字符串连接的性能

在循环体里面禁止使用"+"连接符,详情请参考:Java字符串的“==”和“+”

第68条:遵守普遍接受的命名惯例

多看看 JDK、开源框架源码,学习其代码风格,是很重要的!

第79条:避免过度同步

过度同步可能导致性能降低、死锁,甚至不确定的行为。通常来说,在同步区域内做尽可能少的工作。

第80条:executor、task、stream 优先于线程

不要显式的创建线程,应该使用线程池。详情请参考:理解Java线程池ThreadPoolExecutor

第83条:慎用延迟初始化

在大多数情况下,正常的初始化要优先于延迟初始化。面试中比较典型的问题就是懒汉式的单例,详情请参考:[第3条:用私有构造器或者枚举类型强化 singleton 属性]

上一篇 下一篇

猜你喜欢

热点阅读