第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条:谨慎地进行优化

优化:优化性能、无法维护的重构优化

建议:写好的程序,而不是快的程序,不盲目的去优化。

第68条:遵守普遍接受的命名习惯(不谈)