`

(转)java编程的78条黄金法则

    博客分类:
  • java
阅读更多
原文URL:http://justjavac.iteye.com/blog/1532625

创建和销毁对象
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循环为何可恨
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、线程安全性的文档化
71、慎用延迟初始化
72、不要依赖于线程调度器
73、避免使用线程组

序列化
74、谨慎的实现Seriallizable接口
75、考虑使用自定义的序列化形式
76、保护性的编写readObject方法
77、对于实例控制,枚举类型优先于readResolve
78、考虑用序列化代理代替序列化实例
分享到:
评论

相关推荐

    Java八股文,面试中的黄金法则!

    这些问题旨在评估应聘者的Java编程能力和技术水平。 Java八股文的核心功能包括Java基础、Java高级、设计模式、数据结构与算法、框架技术等。这些知识点是Java开发的基础,掌握这些知识点有助于在面试中应对各种问题...

    程序员35岁前成功的12条黄金法则,为你的未来做个打算

    程序员35岁前成功的12条黄金法则,转载一个牛人对ggmm的建议

    java编程100个例子

    Java编程是计算机科学领域中最广泛使用的编程语言之一,尤其在企业级应用开发中...在实践中,遇到问题不要怕,因为那是成长的过程,记住,理论与实践相结合是学习任何技术的黄金法则。祝你在Java编程之旅中收获满满!

    Java数值计算算法源代码

    在编程领域,数值计算是计算机科学的一个重要分支,它涉及到一系列用于解决数学问题的技术和算法。Java作为一种广泛应用的编程...此外,这些源代码还可以作为教学材料,帮助初学者更好地掌握Java编程与数值计算的结合。

    Java 常用数值算法集

    Java是一种广泛使用的面向对象的编程语言,其在各种领域,特别是科学计算和数据分析中,有着丰富的应用。在Java中,数值算法是解决复杂计算问题的关键工具。这些算法可以帮助我们处理数学、物理、工程等领域的计算...

    HeadFirst系列合集(HTML与CSS,Java,设计模式).zip

    书中深入浅出地介绍了23种经典设计模式,它们是软件开发中解决问题的黄金法则。设计模式不仅是编程经验的精华,更是前人在解决特定问题时积累的最佳实践。例如,工厂模式适用于当一个类不知道它所需要的对象的类的...

    Java开源例程ClockSimpleJEE4 0.97 安全增强和架构整理版

    本软件力推如下的JUnit测试黄金法则:在测试空库上无限次运行不出错。 bug报告jerry_shen_sjf@qq.com 用如下管理员登录 用户名:160208 密码:jerry 火鸟 2014.7.18 Release Note 1)v0.97版本是数据库...

    java数据结构和算法(附源码和演示)

    5. **学习方法**:结合书籍和实践,是学习数据结构和算法的黄金法则。首先,理解概念和原理,然后通过阅读源码和观察Applet演示来加深理解,最后动手实践,尝试自己编写代码来实现这些数据结构和算法,这将极大提升...

    Java开源企业考勤系统ClockSimpleJEE4预发布版0.9.0

    2)JUnit单元测试黄金法则:在测试空库上无限次运行不出错。 3)测试并行系统:可以在正常工作时启动测试套件,测试套件任然使用测试空库, 而同时的正常操作使用产品库。 4)JUnit EE,可以使用Web界面运行JUnit测试...

    2019年面试宝典-阿里巴巴面经

    这些是Java编程语言的基础,也是面向对象编程的核心。 1. 抽象是程序设计中的一种思维方式,它通过定义对象和属性的共同特性来构造类。抽象分为数据抽象和行为抽象,主要关注对象的属性和行为,而不涉及实现细节。 ...

    韩顺平_Java设计模式笔记.docx

    设计模式的七大原则是整个课程的基石,它们不仅指导着设计模式的使用,而且是编写高质量代码的黄金法则。这七大原则包括单一职责、接口隔离、依赖倒置、里氏替换、开闭原则、迪米特法则和合成复用原则。它们帮助...

    实训班PPT配套练习题(免费赠送配合前面的PPT使用效果更显著)

    在这样的学习过程中,理论与实践相结合,是掌握任何技能,特别是编程技能的黄金法则。 最后,值得注意的是,本练习题集是为了配合先前的PPT教学内容而设计的。因此,建议学习者在使用这些练习题之前,先仔细学习...

    ClockSimpleJEE4 0.98测试案例集自动数据库链接回收版

    本软件力推如下的JUnit测试黄金法则:在测试空库上无限次运行不出错。 bug报告jerry_shen_sjf@qq.com 用如下管理员登录 用户名:160208 密码:jerry 火鸟 2015.1.5 这是Release Notes 1)v0.98版本是测试...

    计算机数值分析课件(计算机专业)

    如梯形法则、辛普森法则用于数值积分,有限差分用于数值微分,以及多项式插值(如拉格朗日插值和牛顿插值)。 4. **非线性方程求解**:如牛顿-拉弗森迭代法、二分法等,用于找到非线性函数的零点。 5. **数值优化*...

    软件设计模式与重构大作业-心算大师游戏

    通过以上重构措施,游戏代码将变得更加清晰、可维护和易于扩展,同时遵循良好的设计原则和编程实践。重构过程应逐步进行,确保每次小改动都能通过测试,以保证重构过程中代码的稳定性和正确性。

    反应式微服务框架ServiceComb设计思想.pptx

    ServiceComb通过采用非阻塞I/O和反应式编程,遵循Reactor黄金法则,确保Event Loop的高效运行,从而实现高TPS(每秒事务数)和低延迟。\n\n总之,ServiceComb通过引入反应式微服务架构,结合Vert.x的事件驱动模型,...

    learn-javascript-in-one-course:免费在线课程“在一门课程中全面了解Java语言”的源代码-one source code

    实践中出真知,这是学习任何编程语言的黄金法则。 这个课程还被打上了"系统开源"的标签,这意味着整个课程体系是开放源代码的。这意味着任何人都可以查看、使用、修改或分享这些代码,这对于学习者来说是一个巨大的...

    阿里巴巴历年笔试真题,面经求职大礼包

    首先,对于技术岗位的笔试,通常会涉及到计算机基础知识、编程语言(如Java、C++、Python等)、数据结构与算法、操作系统、网络协议等方面的知识。例如,你可能需要对排序算法(如快速排序、归并排序)有深入理解,...

    裁剪图像.rar_图像 裁剪_图像裁剪_裁剪图像

    - **编程语言实现**:如使用Python的PIL(Pillow)库、Java的AWT或Swing、JavaScript的Canvas API等,通过编程方式实现图像裁剪。 - **图像处理库**:OpenCV、ImageMagick等专业图像处理库提供了丰富的裁剪功能。 ...

Global site tag (gtag.js) - Google Analytics