第57条:将局部变量的作用域最小化
局部变量作用域最小化,就是尽可能的约束它的范围,一是小范围内更方便读,也能降低出错的可能性。
还有一种方法就是就是不断的对方法进行拆分,这样也可以变相的缩减作用域。
第58条:for-each循环优先于传统的for循环
for-each 和 普通 for 的一个明显的区别就是,是否使用变量 i j 等作为下标来记录获取的是第几个元素。
而且 Java 8 后 Iterable 中内嵌了 forEach() 方法更加适合函数式编程。但是也有一些场景是不适合的:
- 遍历删除:从后往前遍历,使用下标可能会出错,迭代器会更加的方便。
- 元素替换:如果需要遍历数组,然后替换其中某些元素,这就需要使用列表迭代器,或者下标。
- 平行迭代:如果多个集合遍历,需要通过下表来控制多个集合之间的一个平行关系,那么还是 for 合适。
第59条:了解和使用类库
学习的时候可以,但是开发中尽量不要重复造轮子。
第60条:如果需要精准的答案,请避免使用flout和double
这一点也不提了,使用 BigDecimal 或者 右移小数位变成整形操作。虽然 BigDecimal 操作必它们略微复杂了一点,但为了精度,这一切也算是值得的。
第61条:基本类型优先于装箱基本类型
因为 Java 有着自动拆装箱的特性,所以对于基本类型和装箱类型的细节差异大家也没有太过于注意。
差别:
- 基本类型有默认值,而装箱类型都是 null,因此基本类型可以通过 == 比较,而装箱类型需要通过方法处理。
- 装箱类型可能性能会受损。
第62条:如果其他类型更适合,则尽量避免使用字符串(不谈)
第63条:了解字符串连接的性能(不谈)
第64条:通过接口引用对象
尽量面向接口而不是实现类编程。
第65条:接口优先于反射机制
反射虽然极其强大,但是破坏了程序的封装性,绕过编译期检查,性能也比较慢,最好在必须使用的时候再去用。
第66条:谨慎地使用本地方法
第67条:谨慎地进行优化
优化:优化性能、无法维护的重构优化
建议:写好的程序,而不是快的程序,不盲目的去优化。
