第8章:通用程序设计
第45条:将局部变量的作用域最小化
- 要使局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明
第46条:for-each循环优于传统的for循环
用for-each没有性能损失,甚至用于数组也一样
for-each在简洁度和预防bug方面有着传统for循环无法比拟的优势
三种情况无法使用for-each:过滤,装换,平行迭代
第47条:了解和使用类库
- 使用标准类库,可以充分利用这些编写标准类库的专家的知识,以及在你之前其他人使用的经验
第48条:如果需要精确的案,请避免使用float和double
- float和double主要是为了科学计算和工程计算而设计的
第49条:基本类型优先于装箱类型
- java有2种类型:基本类型(int,double,boolean)和引用类型:(Strnig,List),每个基本类型都对应有个引用类型:装箱基本类型(Integer,Double,Boolean)
第50条:如果其他类型更合适,则尽量避免使用字符串
字符串不适合代替其他的值类型
字符串不适合代替枚举类型
字符串不适合代替聚集类型
字符串不适合代替能力表
第51条:担心字符串连接的性能
第52条:通过接口引用对象
如果没有合适的接口存在,那么对于参数,返回值,变量和域来说,就应该使用接口类型声明
如果没有合适的接口存在,完全可以用类而不是接口来引用对象
第53条:接口优于反射机制
丧失了编译时类型检查的好处
执行反射访问所需要的代码很多
性能损失,普通应用程序在运行时不应该,以反射方式访问对象
第54条:谨慎地使用本地方法
第55条:谨慎地进行优化
第56条:遵守普通接受的命名惯例
第9章:异常
发挥异常的优点,可以提供程序地可读性,可靠性和可维护性
第57条:只针对异常的情况才使用异常
- 异常应该只用于异常的情况下,它们永远不应该用于正常的控制流
第58条:可恢复的情况使用受检异常,对编程错误使用运行时异常
- java的三种可抛出异常:受检异常,运行时异常和错误
第59条:避免不必要的使用受检异常
第60条:优先使用标准的异常
第61条:抛出与抽象相对应的异常
- 异常转译:更高层的实现应该捕获低层的异常,同时抛出可以按照高层进行解释的异常
第62条:每个方法抛出的异常都要有文档
第63条:在细节消息中包含能捕获失败的信息
第64条:努力使失败保持原子性
- 一般而言,失败的方法调用应该使对象保持在被调用之前的状态