创建和销毁对象

1、考虑用静态工厂方法(返回类的实例的静态方法)代替构造器
2、遇到多个构造器参数时要考虑用构造器
3、用私有构造器或者枚举类型强化Singleton属性
4、通过私有构造器强化不可实例化的能力
5、避免创建不必要的对象
6、消除过期的对象引用
7、避免使用终结(final)方法

对于所有对象都通用的方法

8、覆盖equals时请遵守通用约定
9、覆盖equals时总要覆盖hashCode
10、始终要覆盖toString
11、谨慎地覆盖clone
12、考虑实现Comparable接口

类和接口

13、使类和成员的可访问性最小化
14、在公有类中使用访问方法而非公有域
15、使可变性最小化
16、复合优于继承
17、要么为继承为设计,并提供文档说明,要么就禁止继承
18、接口优于抽象类
19、接口只用于定义类型
20、类层次优于标签类
21、用函数对象表示策略
22、优先考虑静态成员类

泛型

23、不要在新代码中采用原生态类型
24、消除非受检警告
25、列表优先于数组
26、优先考虑泛型
27、优先考虑泛型方法
28、采用有限制通配符来提升API的灵活性
29、优先考虑类型安全的异构造器

枚举和注解

30、用enum带起int常量
31、用实例域代替序数
32、用EnumSet代替位域
33、用EnumMap代替序数索引
34、用接口模拟可伸缩的枚举
35、注解优先于命名模式
36、坚持使用Override注解
37、用标记接口定义类型

方法

38、检查参数的有效性
39、必要时进行保护性拷贝
40、谨慎设计方法签名
41、慎用重载
42、慎用可变参数
43、返回零长度的数组或者集合,而不是null
44、为所有导出的API元素编写文档注释

通用程序设计

45、将局部变量的作用域最小化
46、for-each循环优先于传统的for循环,[for循环为何可恨] http://justjavac.com/other/2012/05/15/whats-wrong-with-the-for-loop.html 
47、了解和使用类库
48、如果需要精确的答案,请避免使用float和double
49、基本类型优先于装箱基本类型
50、如果其他类型更适合,则尽量避免使用字符串
51、当心字符串链接的性能
52、通过接口引用对象
53、接口优先于反射机制
54、谨慎使用本地方法
55、谨慎进行优化
56、遵守普遍接受的命名惯例

异常

57、只针对异常的情况才使用异常
58、对可恢复的情况使用受检异常,对编程错误使用运行时异常
59、避免不必要地使用受检的异常
60、优先使用标准的异常
61、抛出与抽象相对应的异常
62、每个方法抛出的异常都要有文档
63、在细节消息中包含捕获失败的信息
64、努力使失败包含原子性
65、不要忽略异常

并发

66、同步访问共享的可变数据
67、避免过度同步
68、executor和task优先于线程
69、并发工具优先于wait和notify
70、线程安全性的文档化
......

详细说明:http://java.662p.com/thread-3615-1-1.html

java编程的78条黄金法则的更多相关文章

  1. Java编程的逻辑 (62) - 神奇的序列化

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  2. 偏执却管用的10条Java编程技巧

    本文由 ImportNew - LynnShaw 翻译自 javacodegeeks.欢迎加入翻译小组.转载请见文末要求. 经过一段时间的编码(咦,我已经经历了将近20年的编程生涯,快乐的日子总是过得 ...

  3. Java编程的逻辑 (78) - 线程池

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  4. Java编程的逻辑 (83) - 并发总结

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  5. Java编程的逻辑 (27) - 剖析包装类 (中)

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  6. Java编程兵书

    <Java编程兵书> 基本信息 作者: 桂颖 任昱衡 丛书名: 程序员藏经阁 出版社:电子工业出版社 ISBN:9787121207419 上架时间:2013-8-26 出版日期:2013 ...

  7. Java编程基础——流程控制

    Java编程基础——流程控制 摘要:本文主要介绍Java编程中的流程控制语句. 分类 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下三种: 顺序结构:从上到下依次执行每条语句操作 ...

  8. #Java编程思想笔记(一)——static

    Java编程思想笔记(一)--static 看<Java编程思想>已经有一段时间了,一直以来都把笔记做在印象笔记上,今天开始写博客来记录. 第一篇笔记来写static关键字. static ...

  9. Google Java编程风格指南

    出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Comm ...

随机推荐

  1. Dede cms文章内容管理系统安全漏洞!如何有效防止DEDE织梦系统被挂木马安全设置

    第一.安装Dede的时候数据库的表前缀,最好改一下,不要用dedecms默认的前缀dede_,可以改成ljs_,随便一个无规律的.难猜到的前缀即可. 第二.后台登录一定要开启验证码功能,将默认管理员a ...

  2. [Flex] IFrame系列 —— IFrame嵌入html点击其他组件后页面消失的问题

    在flex建的web项目中,打开index.template.html,将param.wmode = "transparent";添加到以下位置 <script type=& ...

  3. I2C协议(转)

    1.I2C协议   2条双向串行线,一条数据线SDA,一条时钟线SCL.   SDA传输数据是大端传输,每次传输8bit,即一字节.   支持多主控(multimastering),任何时间点只能有一 ...

  4. nyoj 106 背包问题

    点击打开链接 背包问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v ...

  5. (转)C#执行exe程序

    本文转自:http://www.cnblogs.com/vir56k/archive/2012/12/03/2799810.html,作者张云飞VIR 最近在操作adb做一些事情,就需要开发个wind ...

  6. T4 assembly

    In a T4 template the executing assembly is not yours but one from the T4 engine. To access types fro ...

  7. POJ 3207 Ikki's Story IV - Panda's Trick

    Ikki's Story IV - Panda's Trick Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 7296   ...

  8. Centos 时间同步服务器

    From: http://www.iteye.com/topic/599648 中国国家授时中心: http://www.time.ac.cn/stime.asp 其他网络时间服务器地址如下:(也可以 ...

  9. Android开发-API指南-数据存储

    Storage Options 英文原文:http://developer.android.com/guide/topics/data/data-storage.html 采集日期:2015-02-0 ...

  10. PMP考试--成本管理中常用的概念

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 净现值(NPV)   Net Present Value 在项目计算期内,按行业基准 ...