effective-java-八

通用程序设计

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

1. 最有力的方法就是在第一次使用它的地方声明
2. 几乎每个局部变量的声明都应该包含一个初始化表达式
3. 在循环终止后不再需要循环变量的内容时, `for`循环优先于`while`循环

第46条:for-each循环优先于传统的for循环

不能使用`for-each`循环的情况
1. 过滤, 需要使用显示的迭代器,或者java8的stream
2. 转换,
3. 平行迭代,

第47条:了解和使用类库

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

使用`BigDecimal`

第49条:基本类型优先于装箱基本类型

区别
1. 基本类型只有值, 而装箱基本类型则具有与他们的值不同的同一性(两个装箱基本类型可以具有相同的值和不同的同一性)
2. 基本类型只有功能完备的值, 装箱类型除了对应基本类型的所有功能值外,还有个非功能值`null`
3. 基本类型比装箱基本类型更节省时间和空间

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

第51条:当心字符串连接的性能

使用`StirngBuilder`代替`String`

第52条:通过接口引用对象

第53条:接口优先于反射机制

第54条:谨慎地使用本地方法

使用本地方法提高性能的做法不值得提倡,因为JVM实现变得越来越快

第55条:谨慎地进行优化

第56条:遵守普遍接受的命名习惯

1. 类,接口,枚举,注解类型的名称,都应该包括一个或多个单词,每个单词的首字母大写
2. 方法和域的名称与上面的习惯一样,只不过首字母应该小写
3. 常量域名称应该用一个或多个大写的单词,每个单词用下划线`_`隔开,常量域是唯一推荐使用下划线的情形