【总结】Effective java经验之谈,枚举,注解,方法,通用设计,异常

来源:互联网 发布:算法研发工程师 编辑:程序博客网 时间:2024/04/29 10:35

Effective java系列
1.Effective java经验之谈,创建和销毁对象
2.Effective java经验之谈,泛型
3.Effective java经验之谈,类与接口
4.Effective java经验之谈,通用方法
5.Effective java经验之谈,枚举,注解,方法,通用设计,异常
6.Effective java经验之谈,并发编程

这几章看的比较快,内容就如同标题一样比较容易理解,所以只有部分内容会在[]中解释,其他的就直接理解标题,并不影响阅读质量。不过如果时间充足的话,还是仔细读一读原书的内容,相信还是有所收获的。主要最近自己想进入算法与机器学习部分,尽快结束这本书。另一方面,讨论一些自己感兴趣的内容,我会将搞过的东西总结下。后面可能写一部分关于java字节码阅读以及编写的东西。只所以这么来,是因为字节码编程还是非常用途实际的,这一"java编译语言"使得String与StringBuilder的性能对比又有了新的认知,为了更好的编写程序,这些是值得学习的。之后,我会在5月份投入到机器学习中,╮(╯▽╰)╭。

转载请注明出处:http://blog.csdn.net/supera_li/article/details/45155857

枚举和注解

  1. 用enum代替int常量。[类|方法通用常量,enum集中起来方便管理|调用|更改]
  2. 用实例域代替序数
  3. 用EnumSet代替位域
  4. 用EnumMap代替序数索引
  5. 用接口模拟可伸缩的枚举[接口类型的枚举,建议看下]
  6. 注解优先于命名模式[就是注解包那个东西]
  7. 坚持使用Override注解[override如果不显示注解,可能引发没有真正覆盖父类的方法,使得未来程序成为潜在bug]
  8. 用标记接口定义类型[eg:就是一些序列化类与targe(ENUM.常量)的取舍对比的东西。如果应用特殊化接口,那么使用前者]

方法

  1. 检查参数的有效性[方法开头做参数校验,对传入的参数要做可信性判断]
  2. 必要时进行保护性拷贝[输出到客户端,客户端返回回来的数据不一定可信,如果可能,就在服务器端进行一份拷贝,这样是最可信的]
  3. 谨慎设计方法签名
  4. 慎用重载[能少就少,能通过类型转换的调用就调用,尽量避免使用重载]
  5. 慎用可变参数[方法参数应该尽量少]
  6. 返回零长度的数组或者集合,而不是null[不然上层代码一直需要做null检测,或者返回null的时候需要增加很多注释]
  7. 为所有导出的API元素编写文档注释

通用程序设计

  1. 将局部变量的作用域最小化
  2. For-each循环优先于传统的for循环
  3. 了解和使用类库
  4. 如果需要精确的答案,请避免使用float和double[仅用于科学计算使用浮点数类,有时候可以考虑用大数类BigDecimal代替相关运算]
  5. 基本类型优先于装箱基本类型[后者属于类,特别在循环中不停的进行自动拆箱与装箱,性能下降较为严重]
  6. 如果其他类型更适合,则尽量避免使用字符串[字符串有较高的性能开销,一个连接+号就代表着字符对象的new,考虑StringBuilder类代替?]
  7. 当心字符串连接的性能[类似于连接+号就是对象的new操作]
  8. 通过接口引用对象[更改对象实现后,只需要将接口后面的new对象类型改变,其他代码不变,可以继续使用]
  9. 接口优先于反射机制[反射机制主要是侵入式的,而且反射出的异常都是集中在运行期的,对于异常的把控不太容易,所以不建议使用]
  10. 谨慎地使用本地方法[平台迁移就over了]
  11. 谨慎地进行优化[分析好优化,尽量在设计好优劣好进行优化,不然优化可能导致多余的浪费]
  12. 遵守普遍接受的命名惯例[容易理解与团队共识的才是惯例]

异常

  1. 只针对异常的情况才使用异常[多正常的一句话,但是对异常情况这个界定还需要仔细斟酌]
  2. 对可恢复的情况使用受检异常,对编程错误使用运行时异常
  3. 避免不必要使用受检异常[传入的参数可信性]
  4. 优先使用标准对应的异常[标准化,容易理解]
  5. 每个方法抛出的异常都要有文档[方便理解]
  6. 在细节消息中包含能够捕捉失败的信息[应该叫做保留异常现场,方便异常出现时知道上下文的内容]
  7. 努力使失败保持原子性[就是不要讲多起失败都处理成一个失败]
  8. 不要忽略异常[catch后就做一个处理,不能忽视,或者忽视后给一个注释]
1 0
原创粉丝点击