49.检查参数的有效性50.必要时进行保护性拷贝51.谨慎设计方法签名52.慎用重载53.慎用可变参数54.返回零长度的数组或者集合,而不是null55.谨慎返回optional56.为所有导出的API元素编写文档注释57.将局部变量的作用域最小化58.for-each循环优先于传统的for循环59.了解和使用类库60.如果需要精确的答案,避免使用float和double61.基本类型优先于装箱基本类型62.如果其他类型更合适,则尽量避免使用字符串63.了解字符串连接的性能64.通过接口引用对象65.接口优先于反射机制66.谨慎地使用本地方法67.谨慎地进行优化68.遵守普遍接受的命名惯例69.只针对异常的情况才使用异常70.对可恢复的情况使用受检异常,对编程错误使用运行时异常71.避免不必要地使用受检异常72.优先使用标准的异常73.抛出和抽象对应的异常74.每个方法抛出的异常都要建立文档75.在细节消息中包含失败-捕获信息76.努力使失败保持原子性77.不要忽略异常
49.检查参数的有效性 50.必要时进行保护性拷贝 51.谨慎设计方法签名 52.慎用重载 53.慎用可变参数 54.返回零长度的数组或者集合,而不是null 55.谨慎返回optional 56.为所有导出的API元素编写文档注释 57.将局部变量的作用域最小化 58.for-each循环优先于传统的for循环 59.了解和使用类库 60.如果需要精确的答案,避免使用float和double 61.基本类型优先于装箱基本类型 62.如果其他类型更合适,则尽量避免使用字符串 63.了解字符串连接的性能 64.通过接口引用对象 65.接口优先于反射机制 66.谨慎地使用本地方法 67.谨慎地进行优化 68.遵守普遍接受的命名惯例 69.只针对异常的情况才使用异常 70.对可恢复的情况使用受检异常,对编程错误使用运行时异常 71.避免不必要地使用受检异常 72.优先使用标准的异常 73.抛出和抽象对应的异常 74.每个方法抛出的异常都要建立文档 75.在细节消息中包含失败-捕获信息 76.努力使失败保持原子性 77.不要忽略异常


